Time of Update: 2018-12-05
知道要證明什麼情況下(x)=(x*(x-1))/2 mod
Time of Update: 2018-12-05
一開始題目意思理解錯了,其實是要求每個group最多能有幾個人,我去找最大group的編號了。。。囧,size居然被我理解成那個意思。。。 正確理解題目意思後,二分答案,枚舉最大值,源點與每個人連容量為1的邊,每個人與他可以呆的組連一條邊,然後將每個組與匯點連線,容量為枚舉的最大值,如果滿流就減小最大值,否則擴大最大值 代碼:#include<iostream>using namespace std;#define min(x,y)
Time of Update: 2018-12-05
我覺得是一道不錯的題目,題目不難,但是考驗基本功無非是用Floyd傳遞閉包,但由於資料量比較大,一開始用的暴力方法儲存公司標記(是字元,不是字串),結果逾時了後來看了DISCUSS,說用位元運算,茅塞頓開還有讀取資料的時候用字元讀,要小心空格! 位元運算是個好東西啊,對於表示有或無,求交和並很方便,且速度快代碼:#include<iostream>#include<string>using namespace std;int g[205][205];int
Time of Update: 2018-12-05
最近做了十多道最大流的問題,主要有以下幾種類型: 1.裸的最大流 POJ 1459 POJ 1273 2.拆點,將某個點的限制轉換到邊的限制上 POJ 3436 POJ 3498 POJ 3281 3.求最大最小,二分答案,合格邊加入到網路中 POJ 2289 POJ 2112 POJ 2455 4.拆點後的合并邊和頂點 POJ 1149,很經典 規律 1. 如果幾個節點的流量的來源完全相同,則可以把它們合并成一個。規律 2. 如果幾個節點的流量的去向完全相同,則可以把它們合并成一個。規律 3
Time of Update: 2018-12-05
//// main.m// 計算程式碼數//// Created by apple on 13-8-12.// Copyright (c) 2013年 apple. All rights reserved.//#import <Foundation/Foundation.h>// NSFileManger ,NSString ,NSArray 類的使用// 計算單個檔案的程式碼數 (可能是檔案 可能是檔案夾)// path :檔案的全路徑 傳回值: intint
Time of Update: 2018-12-05
對N個數字進行大小排序,最多需要知道N*(N-1)/2對大小關係這道題讓你求最少的對數,是在最大值N*(N-1)/2的基礎上求的,因為要確保在知道C對比較後能將序列完全排出來,故M+C=N*(N-1)/2由於資料量比較大,N最大可以到1000,用鄰接矩陣寫Floyd回逾時,所以寫了個鄰接表的Floyd,用DFS也可以 代碼:#include<iostream>using namespace std;int g1[1001][1001],g2[1001][1001],dis[1001]
Time of Update: 2018-12-05
求最少的時間能使牛都走到牛棚裡,先求一次每對點間的最短路,然後二分答案 構圖時,源點到每個牛棚i連一條容量為該牛棚初始牛數的邊,對每個牛棚拆點,如果能從A走到B,連一條A到B"的邊,容量為A初始的牛數,每個牛棚i,連一條道i"容量無窮大的邊,最後每個點i"向匯點連一條容量為該牛棚能容納的牛數的邊,這樣,保證從i到j"的牛不會從j跑到k,而從i到k在規定時間內無法到達 這道題卡了很久,老是WA,一開始以為是SAP模板錯了,試了幾次還不行,最後把floyd修改了下,先初始化,再賦值,最後過了,寫fl
Time of Update: 2018-12-05
Floyd的應用,修改下判斷條件,不過沒有初始化,開始忽略了一個特殊情況,就是兩點間無直接連線,靠間接聯絡在一起cin真的好慢! 代碼: #include<iostream>using namespace std;int g[301][301];int max(int a,int b){return a>b?a:b;}int min(int a,int b){return a<b?a:b;}int main(){int
Time of Update: 2018-12-05
還是歐拉路徑的題,但這次要判斷存在歐拉路徑後輸出字典序最小的路徑,先把單詞按字典序排序,然後判斷是歐拉迴路還是只是歐拉通路,如果是歐拉迴路,直接從第0號單詞開始搜,否則,找到出度比入度大1的那個單詞開始搜 一開始u數組開小了,居然只開了20,導致莫名的錯誤,一些為0的地方被賦值了,以後要注意 代碼:#include<iostream>#include<memory.h>#include<string>#include<cstdio>#include
Time of Update: 2018-12-05
學了最小費用流的增廣路演算法後,就用它寫了 對於每個物品,分別建圖求一次最小費用流,把結果相加就行 少打了一個break,查了1個小時。。。唉 代碼:#include<iostream>#include<queue>using namespace std;#define MAX 120#define inf 99999999int pre[MAX],c[MAX][MAX],f[MAX][MAX],b[MAX][MAX],cost[MAX][MAX][MAX];int
Time of Update: 2018-12-05
每組物品加入了箱子的限制,如果要買改組物品,就必須先買箱子考慮第i組物品時,前i-1組的最優值已經知道,假設總容量為V,改組的箱子的代價為p,那麼如果我們要買該組物品,可用容量就只有V-p,所以,我們先用tmp數組記錄前i-1階段容量範圍在[0,V-p]這個範圍內的最優值,對應加上箱子的代價p的[p,V]這個區間,然後在這個範圍內對改組物品做01背包,再去更新dp值代碼:#include<iostream>#include<memory.h>#include<str
Time of Update: 2018-12-05
明顯的有上下界的網路流,且無源匯,最簡單的形式 代碼:#include<stdio.h>#include<string.h>#include<memory.h>#define MAX 205#define inf 1<<30struct node2{int v,c,next;}g[100000];int dis[MAX],cur[MAX],num[MAX],pre[MAX],adj[MAX];int D[MAX],f[MAX][MAX],from[
Time of Update: 2018-12-05
dp[i][j][k][s]表示當前到第i把鎖,高度為j,是否出現高度差為3(k=1表示出現過,0表示沒有出現過),使用高度的種數為s的方案數類似於按位DP的思想,記憶化求解dfs的時候枚舉第i+1位選擇的高度,並和當前s狀態比較,記錄出現高度的種數代碼:#include<iostream>#include<memory.h>#include<string>#include<cstdio>#include<algorithm>#incl
Time of Update: 2018-12-05
比較難的一道數論題了。。。在練習賽的時候碰到,和隊友YY了很久,沒想到把n個8怎麼表示出來首先,由於特殊性(每個位上都是8),我們把m=888...8(n個8)表示成m=8*(10^0+10^1+...+10^n-1)=8*(10^n-1)/9(關鍵之一)設m=k*l則8*(10^n-1)/9=k*l <=> 8*(10^n-1)/9 = 0 (mod l) <=> 8*(10^n-1) = 0 (mod 9*
Time of Update: 2018-12-05
左孝陵 版: 離散數學-左孝淩.pdf 離散數學答案(左孝淩).pdf曲婉玲 版: 離散數學_屈婉玲_教學大綱pku.doc 離散數學清華經典版本(曲婉玲).pdf 離散數學課件(曲婉玲).rar電子科技大學內部版: 離散數學課件+答案(焦占亞 電子科大離散數學內部教學教材試卷:
Time of Update: 2018-12-05
3041的加強版這道題由於草地不能被木板覆蓋,需要多處理一下 由於木板只能水平或垂直放,做兩次處理,第一次把可以水平放置且不連續的木板編號,第二次把可以垂直放置且不連續的木板編號 將木板看成點,泥地看成邊,一個泥點對應一條邊,這樣就轉化成了二分圖,求最小的點將所有的邊覆蓋即可,最小點覆蓋=最大匹配數 代碼:#include<iostream> using namespace std; #define MAX 1005 int
Time of Update: 2018-12-05
中國剩餘定理的應用 23,28,33兩兩互素x=p(mod 23)x=e(mod 28)x=i(mod 33) (兩條線的等號代替三條線的等號。。。) 最後x-d再對21252模數,注意x-d可能為負數或0 由於23 28 33已經固定,可以先做預先處理,算出Mi和Mi-1 ,M*M-1=1(mod ni)代碼:#include<iostream>using namespace std;struct node{int d;int x;int y;};int
Time of Update: 2018-12-05
1、龍書(Dragon book) 英文名:Compilers: Principles,Techniques,and Tools 作者:Alfred V.Aho,Ravi Sethi,Jeffrey D.Ullman 中文名:編譯原理技術和工具 第一版龍書 第二版龍書 龍書”。龍書是Alfred V. Aho等人於1986年出版的,由於出版年代較早,其中包含部分過時的技術並且沒有反映一些新的編譯技術。新編的《編譯原理》拋棄諸如算符優先分析等過時技術,增加物件導向編譯、類型檢查等新技術:
Time of Update: 2018-12-05
與SOJ
Time of Update: 2018-12-05
這兩天做了下01背包的題,簡單的總結下首先,對於最基本的01背包問題,轉移方程為dp[i][j]=max{dp[i-1][j],dp[i-1][j-cost[i]]+w[i]}表示考慮第i件物品,容量為j時,有兩種策略,第一種是不選該物品,第二種為選擇該物品,在這兩種策略中選擇一個最優策略複雜度O(VN) 虛擬碼for i=1 to n for v=0 to V if(v>=cost[i])