原创 【李超線段樹】BZOJ3165 [Heoi2013]Segment

題面在這裏 李超線段樹的裸題,不解釋 示例程序: #include<cstdio> #include<cmath> #include<algorithm> using namespace std; inline char nc(){

原创 【分數規劃+DFS序上DP】BZOJ4753 [Jsoi2016]最佳團體

題面在這裏 這個題一看就要二分吧…… 然後可以用DP驗證 其實就是樹上取最大和 但是如果定義不好的話會被卡常…… 可以DFS序上DP,常數較小 fi,j 表示DFS序上前i-1個點,取了j個的最大值 然後 fi,j→fi+1,j+1 (取

原创 【斜率優化DP】BZOJ4518 [Sdoi2016]征途

題面在這裏 把m2 乘進去,答案其實就是m∑a2i−S2n 其中ai 是第i天走的路程 那麼就是一個最顯然的平方和模型,直接斜率優化DP 示例程序: #include<cstdio> #include<cstring> #include<

原创 【拓撲】BZOJ4010 [HNOI2015]菜餚製作

題面在這裏 首先要明確,題意不等價於求最小字典序 例如:n=4,3→1,2→4 此時應輸出3124 因爲題目要求的是在保證1…i 先完成的情況下,再考慮i+1 所以求反圖的最大拓撲字典序即可 示例程序: #include<cstdio>

原创 【水】BZOJ1121 [POI2008]激光發射器SZK

題面在這裏 由於從一個頂點出發,最後一定會到另一個頂點 所以答案就是n2 示例程序: #include<cstdio> int main(){ int n; scanf("%d",&n); printf("%d"

原创 【莫比烏斯反演+數位DP】2017 計蒜之道 複賽 A.阿里雲祕鑰池

題面在這裏 首先容斥一下,變爲求[1,n] 有多少數在P 進制下相鄰位互質 然後就可以DP 了:fi,j 表示前i 位,最高位上是j 的方案數 fi,j=∑k=1P−1 [gcd(j,k)=1]fi−1,k=∑k=1P−1fi−1,k∑

原创 【帶限制最短路】BZOJ1922 [Sdoi2010]大陸爭霸

題面在這裏 設摧毀x城市的時間爲dst(x) ,則有: dst(x)=max(Max{dst(y)},Max{dst(s)+ws,x}) 其中y 是保護x 的點,s 是連向x 的點 那麼就可以直接刷Dijstra 了 注意爲了使ds

原创 【遞推+lucas定理】BZOJ2111 [ZJOI2010]Perm 排列計數

題面在這裏 可以發現,此數列恰好滿足堆性質 可以把它看做小根堆的數組儲存形式 然後就可以愉快的DP了: fi=Csize lsonsize ifi∗2fi∗2+1 注意當n>p 時,可能不存在(n!)−1   (mod p) 所以lu

原创 【歐拉函數】BZOJ2705 [SDOI2012]Longge的問題

題面在這裏 考慮如下: ∑i=1n(i,n)=∑d|nd∑id≤n[(id,n)=d]=∑d|nd∑i=1nd[(i,nd)=1]=∑d|nd⋅φ(nd) 然後直接暴力就好了 示例程序: #include<cstdio> #incl

原创 【貪心】BZOJ3668 [Noi2014]起牀困難綜合症

題面在這裏 按位貪心就好了 示例程序: #include<cstdio> const int maxn=100005; int n,m,a[maxn],ans=0,now=0; char op[maxn]; inline int red