原创 [eertree] Codeforces 932G. Palindrome Partition
http://codeforces.com/blog/entry/19193 不是很懂證明 #include <cstdio> #include <iostream> #include <algorithm> #include <
原创 [三元環] BZOJ5206: [Jsoi2017]原力
活那麼久竟然都不會找三元環… https://www.cnblogs.com/jiachinzhao/p/7474761.html 這題的話,顏色相同且兩端點相同的邊權值可以加在一起,然後找三元環就好了 #include <cst
原创 [DP 博弈] Topcoder SRM579 Div1. RockPaperScissors
每一輪的策略跟之前出現過的剪刀石頭布的數量有關 另 fi,a,b,cfi,a,b,c 表示之前出現了 aa 次石頭, bb 次剪刀 ,cc 次布,然後第 ii 個篩子沒用過的概率 DP一下,每一輪獨立算貢獻 // BEG
原创 [DP] Codeforces 936D. World of Tank
令 fi,jfi,j 表示走到 (i,j)(i,j) 時的最大充能 座標離散後 O(n)O(n) DP一下就好了 #include <cstdio> #include <iostream> #include <algorit
原创 [Bluestein's Algorithm DFT] Codechef REALSET. Petya and Sequence
A和B的運算是卷積形式 考慮把A和B DFT D(A)∗D(B)=0,D(B)≠0D(A)∗D(B)=0,D(B)≠0 也就是 A DFT後至少有一個0 求出模某個質數意義下的 2n2n 次單位根 用Bluestein’s Al
原创 [Tarjan] BZOJ5201: [NEERC2017]Connections
tarjan的時候每次每次加入一條返祖邊,都會至少縮去一個點,那麼只要記錄一下遍歷過的邊以及返祖邊就可以了 #include <cstdio> #include <iostream> #include <algorithm> u
原创 [多項式exp] LOJ#556. 「Antileaf's Round」咱們去燒菜吧
學一發分治FFT求多項式exp 感覺這種打法應該比牛頓迭代好打多了 #include <cstdio> #include <iostream> #include <algorithm> using namespace std;
原创 [卷積定理] LOJ#548. 「LibreOJ β Round #7」某少女附中的體育課
設變換矩陣爲 TT 由卷積定理可以知道 對於 TT 的每一行的任意 i,ji,j 滿足 xi×xj=xi opt xjxi×xj=xi opt xj 因爲 AA 滿足循環律 所以存在 c>1c>1 滿足 xci=xixic
原创 [鏈剖 FFT] LOJ#6289. 花朵
樹形DP的轉移是一個卷積的轉移形式 可以先鏈剖,一個點的輕兒子先合併,然後一條重鏈用分治FFT合併 #include <cstdio> #include <iostream> #include <algorithm> #inclu
原创 [容斥] Topcoder SRM555DIV1. MapGuessing
經典題了 枚舉初始狀態的磁頭位置,求出哪些位置可以隨意改動,然後大力容斥 #include <cstdio> #include <iostream> #include <algorithm> #include <vector> #
原创 [線性基 貪心] Topcoder SRM557Div1. XorAndSum
對數列建線性基,求出最大異或值 那麼不在線性基裏面的元素可以把它變成最大異或值 在線性基裏的元素,可以把最高位的元素變成最大值,然後把其他數異或上最大值 #include <cstdio> #include <iostream>
原创 [矩陣乘法優化DP] Topcoder SRM554. TheBrickTowerHardDivOne
dp fi,sfi,s 表示第 ii 層的狀態爲 ss 的方案數 轉移是一個矩乘的形式 用矩乘快速冪優化 #include <cstdio> #include <iostream> #include <algorithm>
原创 [差分約束] Topcoder SRM553 Div1 Hard. YamanoteLine
可行的長度肯定是一個區間 約束條件可以建城差分約束系統,那麼判無解就是判是否有負環 記一下負環上關於總長度的係數,二分就可以了 #include <cstdio> #include <iostream> #include <alg
原创 [最小割] Topcoder SRM558Div1. SurroundingGame
對網格黑白染色 黑的格子和源點連邊,白的格子和匯點連邊 因爲如果保留benefit就必去刪去cost或者所以和他相連的格子的cost 大概是這樣 跑最小割 #include <cstdio> #include <iostrea
原创 [決策單調 分治] LOJ#535. 「LibreOJ Round #6」花火
如果 i<ji<j 且 ai>ajai>aj 那麼 ii 作爲左端點比 jj 優,右端點同理 那麼搞出兩個上升序列,發現右端點遞增的時候左端點也是單調上升的,也就是gjghfd和vector說的具有決策單調 分治就好了 #