原创 hdu 3966 Aragorn's Story 樹鏈路剖分 區間更新點查詢

建立hash 好的線段樹,在更新的過程中hash 好的樹,明顯update 過程需要一直回朔上去,query 直接能能查詢,線段樹上也只要區間更新,單點查詢比較簡單,如果區間查詢可能麻煩下(回朔上去)。模板真好用水了3道鏈路了 #inc

原创 hdu 4679 樹形dp

dp[i][3] 分別表示以這個點最長 次長 次次長的長度,爲了方便dp 應該還需要記錄這個dp 的fa 來至哪個兒子節點 對於當前節點u 和子節點v 最大的邊 有可能是 dp[v][0] 或者 u 去掉v這部分的最長鏈條  #prag

原创 div 2 199 D 狀態壓縮dp 輪廓線很好寫

  很以前算種類的不同的是圖中有X(不能放)和O能移動,其他都一樣,而且要滿足這個圖有能移動的,用輪廓線寫比較好寫多一維記錄是否已經能移動了,對X和O 做特殊做只能是1看待, #include<cstdio> #include<cstr

原创 poj 3342 樹形dp_最大獨立集合

對於最大獨立集: dp[i][0] 表示不取i的最大值 dp[i][1]表示取i的最大值 表示不取父親   dp[fa][0]+=max(dp[son][0],son[son][1]);可以去兒子節點或者不取; 表示取父親      dp

原创 hdu 4758 ac自動機+dp

明顯dp[n][m][n1][m1][4] 表示用了n個R m個D,A串已經匹配了n1個B串匹配了m1,4種狀態(0表示沒有一個串已經匹配,1表示有第一串已經匹配了,2表示第二個串匹配,3表示2個串都匹配了)然而這個的負責度爲100*10

原创 轉一下大神的字符hash,

看到了一種hash到long long 在sort 的unique 的方法,恨nice 沾上大神代碼 const int MAXN = 1000003; //常用 1 1 SDBMHash unsigned int SDBMHash

原创 poj 1463 樹形dp 最小點覆蓋

對於最小點覆蓋 fa爲父親節點 son爲兒子節點 dp[i][1] 表示選了i的最小值 dp[i][0] 表示不選i的最小值 明顯 dp[fa][0]+=dp[fa][1];         dp[fa][1]+=min(dp[son][

原创 poj 3659 樹形dp 最小支配集

樹形dp 3連發 支配集和覆蓋集有不同的定義,覆蓋集一定是支配集,但是支配集不一定是覆蓋集,覆蓋集是每一條邊必須有一個點被選擇。         但是支配集只要所有點 1包含在集合內 2 和他相連點在集合內。 比如  1->2->3->4

原创 spoj AMR11 Robbing Gringotts 雙邊暴力+hash+費用流

   開始的時候,明顯揹包的複雜度是10000000*25*50 然後認爲暴力的複雜度(1<<25)*50 還小於前者,然後就是各種剪紙,然後就是各種tle ,後面看題解又是暴力一半,hash一半,複雜度可以爲(sqrt(1<<25)*5

原创 bzoj 1036 樹的統計Count 點權值模板

樹鏈剖分 點權型可做模板,鏈路剖分的思想把點hash到線段樹的上,然後可通過n*(log(n)*log(n))的複雜度在樹上操作,在線段樹上能操作的在鏈路上都能操作。 #include<cstdio> #include<cstring>

原创 poj 2411 狀態壓縮dp+輪廓線

  在南京賽區的c題用100*1000*1000*20 做法一直沒寫出來,後來隊友看了下題解說是輪廓線,然後自己看了大白書上說的輪廓線發現 那樣比較好寫而且複雜度低 所以拿poj 2411 來練習下 設 m行 每行n個 首先複雜度(n*m

原创 小哀

原创 mark_

一向認識數學的東西很厲害。。。。但是很有趣,。,。,。,

原创 歸併排序,逆序數

寫了個模板類,指針 a爲被排序,b爲tmp 返回逆序數,調用時候Merge.sort(a,b,n); #define ll long long template<class T> class Merge { public: T