原创 回家 (無向圖割點)

思路: 一是要是割點,而是要分開1和n。 我們通過判斷一個割點的兒子能不能到達n,因爲割點的兒子跟1是不相連的(從1開始的dfs) #include <iostream> #include <cstdio> #inclu

原创 BZOJ 3210 花神的澆花集會 (切比雪夫 曼哈頓)

3210: 花神的澆花集會 Description 在花老師的指導下,每週4都有一個集會活動,俗稱“澆水”活動。 具體澆水活動詳情請見BZOJ3153 但這不是重點 花神出了好多題,每道題都有兩個參考系數:代碼難度和算法難

原创 數顏色 (二分查找 主席樹)

數顏色 10.23 寫了個主席樹,結果Tdiao了。。。 #include <cstdio> #include <iostream> #include <algorithm> #include <cstring> #define

原创 ccount 進制拆分(Lucas 數位dp)

ccount 10.20 思路: 對於一個C(n,m) 我們要求的就是它%5後是否爲0。 這個nm太大了,我們沒有辦法直接計算,又發現這個模數P=5是個質數。 考慮Lucas,分解之後就會成爲C(a1,b1) * C(a2,

原创 BZOJ 4197 壽司晚宴 (狀壓dp)

4197: [Noi2015]壽司晚宴 Time Limit: 10 Sec Memory Limit: 512 MB Description 爲了慶祝 NOI 的成功開幕,主辦方爲大家準備了一場壽司晚宴。小 G 和小 W

原创 蚊子 (樹形期望dp)

蚊子(mosquito) 10.26 首先每隻蚊子的貢獻是獨立的.如果一隻蚊子經過了k個會被滅蚊器影響的點那麼這個蚊子對答案的貢獻是1-(1-p/q)k. 用1遍bfs求出哪些點是被滅蚊器影響的點.然後進行不同的處理. n爲樹

原创 facsum (線性篩 積性函數)

facsum 10.20 思路: 對於式子進行分析,前面的Phi就是一個很常規的轉化,變成i^m。後邊一個約數個數,一個Mobius,一個單位函數都是積性函數,所以捲起來也就積性啦(不是積性怎麼做嘛。。) 於是就上線性篩了。

原创 Kor (數學題...)

kor 10.19 思路: 考慮維護cnt數組,cnt[i]表示是i的數有幾個。 考慮維護從cnt1數組,cnt1[i]表示是i的二進制子集的數有幾個。 顯然cnt1可以從cnt轉移過來,但是爲了優化時間複雜度,我們選擇把c

原创 基因的庇護 (AC自動機 dp)

基因的庇護 10.25 思路: 一道比較典型的AC自動機上DP,只不過需要分析一下性質。 由於每個位置都需要被庇護序列覆蓋到,用dp[i][j][k]表示鏈長爲i,在AC自動機上的j號點,當前鏈上倒數第k個位置是最左的沒有被覆

原创 兔子 (dp)

兔子(rabbit) 10.26 第1,2個測試點: O(n!). STL中的next_permutation()就可以得到這20分 第3,4個測試點: O(n!)打表,O(1)回答. STL中的next_permutati

原创 星空 (狀壓dp)

星空 10.24 思路: 鏈接 #include <iostream> #include <cstdio> #include <algorithm> #include <cstring> #include <queue> #d

原创 分組 (並查集)

分組 10.23 問題可以轉化爲,從後往前,選擇一段最長的合法區間並分割,重複進行直到完成爲止。 從std中收穫一種神奇的並查集寫法(下面隱藏處),準備研究研究。(按秩合併優化路徑壓縮??還只有一個數組??看起來就很優) #i

原创 壽司 (拆環爲鏈 大模擬)

10.28 思路: 模擬題,枚舉向那個點靠攏。 顯然只用考慮一種顏色算就好了。 每次向i號點靠攏,前一部分的點靠前,後一部分的點靠後。 然後模擬遞推就好了。 這種拆環爲鏈的題一般都要擴倍。 #include <iost

原创 group 求階(BSGS 歐拉定理)

group 10.20 30% 直接暴力算數列,直到遇到一個出現過的數,這樣後出現的數前面一定都出現過了,所以直接看當前出現的數有多少個不同即可。 複雜度: O(T mod) 100% 因爲gcd(a, mod) = 1,

原创 入陣曲 (組合數 餘數統計)

入陣曲 10.24 思路: 明顯的n3複雜度,考慮n2卡住上下界,組合數計數優化,由於模數比較小,我們維護了每一列的前綴之後,就可以O(1)計算固定上下界的前綴矩形的值了。記錄每個前綴矩形modK的餘數,記錄每種餘數有多少個,同