原创 [ 線段樹 ] HDU5306 Gorgeous Sequence

吉利論文例題 #include<bits/stdc++.h> using namespace std; char nc() { static char buf[100000],*p1=buf,*p2=buf; re

原创 [ 高斯消元 二分圖最大匹配 ] [ HEOI2013 ] BZOJ3168 鈣鐵鋅硒維生素

題解 #include<bits/stdc++.h> using namespace std; const int N=310; const int P=1000000007; int k,n,m; int a[N][N],b[N

原创 [ 虛樹 ] [ Heoi2014 ] BZOJ3611 大工程

虛樹裸題 #include<bits/stdc++.h> using namespace std; char nc() { static char buf[100000],*p1=buf,*p2=buf; retu

原创 [ 並查集 ] Codechef March Cook-off 2018 Div 1 Chef Chooses a Subset

定義邊的權值爲連接的兩點權值的 andand ,那麼一個連通塊所有點的 andand 值等於所有邊權的 andand 值。 枚舉答案的 andand 值,再枚舉權值包含它的所有邊,用並查集求出最大連通塊就好了。 複雜度

原创 Codechef September Challenge 2019 Division 1 題解

大一滾來打ACM了… Chef Designed a Network 首先排除 n=1n=1n=1 和無解的情況,然後二分答案 ddd 。 當 d=2d=2d=2 時,顯然最多能連的邊爲 n+1n+1n+1 。 顯然在 d≥3d\

原创 [ DP FWT 鏈分治 ] [ SDOI2017 ] BZOJ4911 切樹遊戲

題解 #include<bits/stdc++.h> using namespace std; char nc() { static char buf[100000],*p1=buf,*p2=buf; return p1=

原创 [ 雜題 樹狀數組 ] VK Cup 2018 - Round 2 Codeforces924D Contact ATC

假設當風力爲 −w−w 時,點 ii 在 titi 時刻經過 00 ,當風力爲 ww 時在 t′iti′ 時刻經過 00 。 顯然在風力從 −w−w 變化爲 ww 的過程中,點 ii 經過 00 的時刻也會從 tit

原创 [ 決策單調性優化DP ] 計蒜客 是男人就過 8 題 H Sign Location

%%%LargestJN 顯然標誌放在車站上是最優的。 令 fi,jfi,j 表示放了前 ii 個標誌,最後一個標誌在 jj 位置的最小代價,轉移推下式子就行了。 打個暴力發現滿足決策單調性,分治做就好了。 講下怎麼推式子。

原创 [ 線段樹 泰勒展開 ] Codechef April Challenge 2018 Division 1 Chef at the Food Fair

大佬教我做題 ans=∏i=LR(1−pi)=eln∏Ri=L(1−pi)=e∑Ri=Lln(1−pi)ans=∏i=LR(1−pi)=eln⁡∏i=LR(1−pi)=e∑i=LRln⁡(1−pi) 將 ln(1−x)ln⁡(1−x)

原创 [ 雜題 複雜度分析 ] Codeforces955F Heaps

對於 k=1k=1 ,可以直接樹形DP求出答案。 對於 k>1k>1 ,顯然 maxdepth<logknmaxdepth<logk⁡n 。設 dpi,jdpi,j 表示 ii 號點,depthdepth 爲 jj 時最大

原创 [ 高斯消元 ] [ SDOI2017 ] BZOJ4820 硬幣遊戲

假設匹配到一個串後不會停止。 設 pipi 表示匹配到的第一個串爲 ii 的概率,pxpx 表示沒有匹配到任何串的概率。顯然 pipi 就是答案。 對於第 ii 個串,我們考慮由一個沒匹配到任何串的字符串接上它形成的串。

原创 [ 分治FFT ] HDU5730

分治FFT裸題 #include<bits/stdc++.h> using namespace std; typedef double db; const int P=313; const int N=100010; const db P

原创 [ 狀壓DP ] [ Snoi2013 ] BZOJ3590 Quare

一個邊雙連通圖一定可以由一個點不斷套上環形成。那麼考慮DP,可以每次選一條鏈,然後兩端和原集合連起來更新。 設 fSfS 表示集合 SS 的答案。 因爲要選一條鏈,所以還要維護 h[S][x][y]h[S][x][y] 表示把

原创 [ Xor最小生成樹 分治 字典樹 ] Codeforces888G Xor-MST

裸的 xorxor 最小生成樹。 枚舉每一位,把這一位爲 00 的放在一起形成一個連通塊,爲 11 的放在一起形成一個連通塊,之間用字典樹求一條最小邊,然後分治做。 #include<bits/stdc++.h> using na

原创 [ 雙連通分量 ] Codeforces962F Simple Cycles Edges

發現一條邊是合法的當且僅當它在一個點雙連通分量內且這個點雙連通分量是個簡單環(邊數=點數)。然後做遍 tarjantarjan 就好了。 #include<bits/stdc++.h> using namespace std; cons