原创 XTU OJ Highway(樹的直徑)

樹的直徑是指樹的最長簡單路。 求法: 兩遍DFS :先任選一個起點DFS找到最長路的終點,再從終點進行DFS,則第二次DFS找到的最長路即爲樹的直徑; 原理: 設起點爲u,第一次DFS找到的終點v一定是樹的直徑的一個端點

原创 判斷一個數是否包含平方因子

int miu(int num) { int cnt1=0,cnt2=0; for(int i=2;i*i<=num;i++) { cnt2=0; if(num%i==0)

原创 判斷四點共面

四個點構造三個向量,形成一個行列式 若行列式的值爲0,則共面;不爲0,則不共面 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm

原创 Holding Bin-Laden Captive!(母函數)

題目大意是給出面值分別爲1 2 5的硬幣的數量,求用這些硬幣不能搭配出來的總面值的方法數。 母函數模板請看我的另一篇文章http://blog.csdn.net/rcy_zhu/article/details/75041050 #

原创 Ignatius and the Princess III (母函數)

題目大意是給出一個數,求這個數能分解出來的加法算式的個數(加數順序不分前後) 母函數模板請看我的另一篇文章: http://blog.csdn.net/rcy_zhu/article/details/75041050 這題的模板

原创 二分圖最大匹配算法

/* 該模板不用建立超級源點和超級匯點, 直接把二分圖中對應的邊連接即可 */ int V;//頂點數 vector<int> G[N];//圖的鄰接表表示 int match[N];//所匹配的點頂點 bool used[N];

原创 51Nod 旋轉字符串

水題一道。 不難發現,一個字符串由對串旋轉而來,其本身也是一個對串,所以直接判斷給出的字符串是不是對串就好。 這裏判斷對串用到了KMP算法中的Next數組 (參考本人另一篇文章:http://blog.csdn.net/rc

原创 區間第k大的數(主席樹)

套主席樹求區間第k小的數的模板,然後求區間[l,r]第k大的數就等於求區間[l,r]第r-l+1-k小的數(下標從1開始) 區間第K小值問題 有n個數,多次詢問一個區間[L,R]中第k小的值是多少。 查詢[1,n]中的第K小值

原创 51NOD 1213 二維曼哈頓距離最小生成樹

因爲是二維平面圖,所以點很多,如果全部點都連邊,將有N*(N+1)/2條邊,數組肯定存不下,所以要想辦法減少邊數。題目要求的是最小生成樹的權值,又是曼哈頓距離,可以發現,對於平面上的某個點,以該點爲原點建立直角座標系,則我們只需要

原创 母函數

母函數是一個很神奇的東西。 詳細請看某位大牛的文章,模板挺好的 http://blog.csdn.net/xiaofei_it/article/details/17042651 模板: K對應具體問題中物品的種類數。 P對

原创 n!的長度

//給一個數X,len=log10(X)+1就是X這個數的長度 //當N的值不超過10^6時 //那麼N的階乘長度=log10(1*2*3*4*……*N)+1=log10(1)+log10(2)+log10(3)+log10(

原创 線段樹

線段樹主要用於多次查詢和更改操作,時間複雜度是o(nlog(n)),n爲區間長度 struct T { ll val; ll addmark; } tree[N<<4]; void init() { mem

原创 Square Coins (母函數)

題目大意爲:有1,4,9,16……..289(17^2)共17中不同的硬幣,問有幾種方法組成所給的數字。 母函數模板請看我的另一篇文章: http://blog.csdn.net/rcy_zhu/article/details/

原创 Bicycle Race

Bicycle Race Maria participates in a bicycle race. The speedway takes place on the shores of Lake Lucerne, just re

原创 結構體優先隊列自定義優先度

bool operator ()(int &a,int &b){ return a>b;//最小值優先 } bool operator ()(int &a,int &b){ r