原创 有向無環圖的支配樹

支配樹:樹上的任何一個點的所有祖先都是在有向無環圖中這個點到樹根的所有路徑的必經點。 有向無環圖支配樹求法: 由於在有向無環圖中可能有很多聯通塊,所有需要先記錄入度,然後從每個入度爲0的點開始跑bfs,每個點在支配樹上的父親就是在

原创 牛客練習賽66 E-騷區間

騷區間 題意:給一個長度爲n的全排列,求有多少個騷區間。騷區間定義,對於[l,r]這個區間滿足在這個區間中只有1個數小於al,只有1個數大於ar,那麼這個區間就爲騷區間。n<=1000000,ai數組爲全排列。 思路:明顯枚舉每個

原创 BFS樹

BFS樹就是通過bfs遍歷一個圖構成出來的樹,特點就是在無權圖上的非樹邊連接的兩點一定在同一層(即深度相同)或者相鄰的兩層(即深度差的絕對值爲1)。 原理:首先bfs樹中每個點的深度就是這個點到樹根的最短距離,這個想成權值爲1的d

原创 最大獨立集 最大團

最大團就是一個無向圖中找到一個點集,這集合中的任意兩個點直接都有邊直接相連,點數最大的點集就是最大團。 最大獨立集就是一個集合中的任意兩個點之間都沒有邊相連接,最大的點集就是最大獨立集。 圖G的最大獨立集點數就是圖G的補圖Gv的最

原创 求斐波那契數列循環節

當斐波那契數列%mod時一定存在一個循環節,根據鴿巢原理,mod*(mod-1)一定是一個循環節,但不一定是最短的。 然後求斐波那契數列%n的循環節時,先把n質因數分解, n=p1a1* p2a2*…*pkak, 然後循環節就是每

原创 整除分塊 模板

求n/1+n/2+n/3+n/4+…n/n的和,n/i都向下取整。 for(i=1,j;i<=n;i=j+1){ j=n/(n/i); ans+=(j-i+1)*(n/i);//n/i代表數量權值,可根據題意更改

原创 Smooth Array

Smooth Array 題意:給n個數,每次操作可以修改數組中的一個數使之爲任意數,求最小修改次數,使得修改完的數組每k個連續的數之和爲s。 思路:因爲每k個連續的數之和爲s則,a[i]=a[i+k],即a數組最終爲一個k週期的

原创 可持久化Trie樹

模板 const int MAX_N=301000; int trie[MAX_N*32][2],latest[MAX_N*32]; int s[MAX_N],root[MAX_N],tot; void insert(int k,

原创 網絡流模板+費用流模板

注意tot是從1開始,邊的數量m爲點的平方,即n*n。 複雜度o(n * m * m)。 初始化memset(head,0,sizeof(head)) #include<iostream> #include<cstdio> #in

原创 Tree ---樹鏈剖分之31個線段樹

Tree 一開始開了31個線段樹sum維護區間異或和,然後第五個點T了,之後又sum維護區間1的個數,然後第12個點T了,然後又把兩個循環合成了一個,然後提前算出來了一個數就A了,感覺時間卡的很離譜。 卡時間垃圾題。基本都是板子。

原创 ACM-ICPC 2018 瀋陽賽區網絡預賽 J. Ka Chang

ACM-ICPC 2018 瀋陽賽區網絡預賽 J. Ka Chang 題意:兩個操作,1操作將深度爲x的所有點加權值k,2操作詢問x的子樹的權值和。 q<=1e5,n<=1e5。 思路:可以考慮兩種思路,第一種用樹狀數組維護每個

原创 Jiu Yuan Wants to Eat 樹鏈剖分和線段樹多重標記

Jiu Yuan Wants to Eat 題意:unsigned long long 型的數,四種操作:操作1樹上區間乘以某個數,操作2樹上區間加上某個數,操作3樹上區間反轉,即二進制1變成0,0變成1,操作四求和,由於是uns

原创 CodeForces - 979D Kuro and GCD and XOR and SUM

CodeForces - 979D Kuro and GCD and XOR and SUM 題意:兩個操作,1向數組中添加一個值x,2詢問數組中的值滿足所給條件的異或xi之後爲最大值的值。 2操作輸入xi,ki,si,在數組中找

原创 階梯博弈

模型:在下標爲0-n的(n+1)堆石子中,每次可以在非空的一堆中選擇一個或多個石子扔到前一堆石子中,第0堆石子不能再扔了,即第1堆石子可以扔到第0堆,但第0堆的石子不能動,所以最後的狀態一定是第0堆放着原先所有堆的石子。若誰不能移

原创 南昌ICPC拉格朗日求值法題目

Polynomial 題意:給出一個n次多項式F(x),給出F(0),F(1)…F(n),m個詢問給出l,r,求F[l]+F[l+1]+…+F[r-1]+F[r]。 n<=1000,m<=2000,1<=l<=r<=9999990