原创 hdu 5322 Hope 分治 NTT

設f[i] 表示長度爲i時的答案,那麼 f[i]=∑i=1nCj−1i−1∗f[i−j]∗(j−1)!∗j2 然後這個東西直接分治fft就行了。 推錯式子害死人。。。 #include <bits/stdc++.h> us

原创 bzoj 3598 [Scoi2014]方伯伯的商場之旅 數位dp

當位置向後移動時,可以發現答案加上前面一段所有數字之和減去後面一段所有數字之和。 然後前面一段所有數字之和單調不減,後面一段所有數字之和單調不增。 爲了避免重複找最前面的滿足的點。設答案的位置爲a1,a1的下一個位置爲a2。

原创 bzoj 2730 [HNOI2012]礦場搭建 點雙連通分量

如果只有一個點雙,答案爲2,隨便選兩個點。 否則求每個點雙裏有幾個割點,如果割點個數大於等於2,那麼這個點雙中不用選點,如果個數爲1,那麼點雙中需要選一個不是割點的點。 #include <bits/stdc++.h> usin

原创 bzoj 1758 [Wc2010]重建計劃 01分數規劃 點分治 單調隊列

直接01分數規劃,然後把樹分治查找所有鏈,然後合併時就是查一個定長區間的最大值,寬搜離線下來然後單調隊列搞就行了。 不過我想說這題卡常數。。。卡常數。。。常數。。數。。 不過好像三個月之前做就沒有這事了。。。 樹分治可以預處理快

原创 bzoj 4321 queue2 dp

設f[i][j][0/1] 表示前i個數有j個非法的,i是否與i-1相鄰的方案數,轉移看代碼吧。。 #include <bits/stdc++.h> using namespace std; #define N 1100 #de

原创 bzoj 4008 [HNOI2015]亞瑟王 期望dp

先考慮這麼一個式子: Pr第2次選2=Pr第2次不選1∗Pr第1次不選2∗Pr選2 其中Pr表示概率。 這個式子是錯的,因爲 第1次不選2和第2次不選1的概率不是獨立的。 所以直接算的方法gg了。 設f[i][j] 表

原创 bzoj 4000 [TJOI2015]棋盤 dp 矩乘

逗比題面,毀我青春 行列編號從零開始。。。然後我以爲那個點在最上面那排。。。 媽蛋那樣要記兩排狀態!!! 點在中間那排的話記一排狀態矩乘轉移就行了。 #include <bits/stdc++.h> using namesp

原创 bzoj 3566 [SHOI2014]概率充電器 概率dp

題裏那個直接充電和間接充電是一樣的。。。 除0掛了半天還以爲是卡精。。。 設f[i] 表示i和i的子樹使點i充電的概率。 設g[i] 表示除掉i的子樹的剩餘的部分把i的父親充電的概率。 轉移看代碼吧。。。。 #inclu

原创 bzoj 2759 一個動態樹好題 LCT 數學

果然是一道動態樹好題。 《論LCT的正確使用方法》以及《出題人真會玩》系列 把每個點向p連一條邊,那麼這是一個基環樹森林。 先從環上拆下來一條邊並記錄這條邊指向的點,然後這玩意就變成了一坨有根樹。 設根爲x1,根指向的點爲x

原创 bzoj 3611 [Heoi2014]大工程 虛樹 dp

直接上虛樹dp一下就好了。。。 #include <bits/stdc++.h> using namespace std; #define N 1100000 #define ll long long int n,Q,cnt,to

原创 hdu 3749 點雙連通分量

留個模板(求所有點雙) 求所有點雙時開個棧維護。注意求點雙時記錄一下每個子樹開始的位置,如果這個點是對於這個子樹的割點,那麼點雙是這個子樹在棧中剩下的點+這個點本身。 #include <bits/stdc++.h> using

原创 bzoj 3851 2048 dp

一開始sb看錯題,沒看見兩個相等的數拼在一起。 如果只有兩個相等的數能拼在一起,那只有2的整數次冪有用。 設f[i][j] 表示選了20 到 2i 的數和爲j的方案數。 注意到只要和大於等於2048就有解,因此第二維只

原创 bzoj 3572 [Hnoi2014]世界樹 虛樹 dp

先建出虛樹(似乎虛樹可以不寫重新標號) dfs兩次維護f[x] 在x的子樹中距x最近的選中的點,g[x] 整棵樹中距x最近的選中的點。 考慮虛樹中的每一條邊,這條邊上的所有不在虛樹上的點以及他的子樹只能選這條邊兩端的虛樹上

原创 bzoj 3879 SvT 後綴數組 rmq 並查集

先求出後綴數組。 對於每組詢問,按rank排序,求相鄰兩個的lcp,按lcp從大到小合併相鄰兩個,用並查集維護。 #include <bits/stdc++.h> using namespace std; #define N 5

原创 bzoj 4197 [Noi2015]壽司晚宴 dp 容斥

注意到小於n√ 的質數最多有8個。而大於n√ 的質因子每個數至多有1個。 因此狀壓<n√ 的質數。 設f[i][j] 表示A選的<n√ 的質數集合爲i的子集,B選的<n√ 的質數集合爲j的子集的方案數。 預處理nu