原创 BZOJ3771:Triple(生成函數+FFT+容斥)

題面 題意:一些數,對於每個x,選3個以下的數,不計順序,和爲x的方案數。 順序就是階乘,先不管,最後乘上就行了 設生成函數爲A 考慮選兩個數,直接卷積後會算重複的,減去兩個相同的方案數 三個的話,會算重選了兩個一樣的 減

原创 洛谷4260:博弈論與概率統計(組合數學+莫隊/分塊)

題面 題意:小L在玩遊戲,贏了n場,輸了m場 贏一場得1分,輸一場扣1分 若當前爲0分,則不會扣 問期望得分 前置技能 有一個n個1和m個-1的序列,求前綴和最小值≥0的方案數 考慮不合法的 找到第一個和爲-1的前綴

原创 BZOJ4652:循環之美(數學+杜教篩)

題面 這題天秀 題意:求有多少個互質的x,y,x≤n,y≤m 使得xyxy 的小數在k進制下從第一位開始無限循環 我看到這題,突然發現和我小學5年級奧數學的內容很像(我小學好厲害) 當時講了怎麼把一個循環小數化成分數 從第

原创 POJ3691:DNA repair(AC自動機+DP)

題面 題意:有很多個只包含4個字母的短串和一個長串 問長串至少改幾個字符就不包含任何短串 用短串建AC自動機,標記好所有結束狀態 設f[i][j]f[i][j] 爲長度爲i,後綴爲狀態j的最小更改數 每次枚舉4個字母轉移就

原创 BZOJ2565:最長雙迴文串(迴文自動機)

題面 題意:給出一個串,求出其最長子串T,使得T是兩個迴文串拼接而成。 我的做法是在建出迴文自動機時,求出每個前綴的最長迴文後綴。 然後用反串在自動機上跑,求出每個後綴的最長迴文前綴 就可以算答案了 而串在迴文自動機上跑

原创 洛谷3401:洛谷樹(樹鏈剖分+機巧的位運算)

題面 題意:一棵樹,支持邊修改,問路徑的子路徑異或和。 異或運算每位獨立 gdkoi魔卡燒酒Sakura的套路 區間的子區間的異或和爲區間異或前綴和 中0的個數乘1的個數 因爲在前綴和中的0和1可以任意配對,也只有01配對

原创 BZOJ3211:花神遊歷各國(線段樹)

題面 題意:序列,區間開根,區間求和 題解:見題意 爲什麼做這題? 爐石玩多了,只會做一眼題了 #include <iostream> #include <fstream> #include <algorithm> #inc

原创 BZOJ4033:[HAOI2015]樹上染色(樹形dp)

題面 題意:n個點有邊權的樹,讓你選擇k個點爲白色,其餘爲黑色。 問同色點兩兩之間距離的和的最大值。 設f[x][i]f[x][i] 爲子樹x裏i個白點的最大貢獻 包括x的父邊邊權的貢獻 然後一個一個兒子合併,字面意思轉移

原创 BZOJ2466:樹(樹形dp)

題面 題意:一棵樹,選最少的點使得所有點都被覆蓋奇數次 選一個點會覆蓋它自身和相鄰的點 爲點x設4個狀態,分別表示x選或不選,僅考慮x的子樹,x是否被覆蓋 若某個點不選,則每個兒子都要被覆蓋,反之亦然 就可以轉移了,雖然有一

原创 BZOJ2127:happiness(最小割)

題面 題意:一羣人,每人選文選裏都有收益,相鄰兩個人同時選文和選理也有收益 問最大收益 二選一,應該是網絡流 網絡流忘得差不多了 我剛看到的時候什麼都想不出 二選一能處理的問題 ①兩個人選不同的有代價 ②一羣人選相同某

原创 BZOJ3027:Sweet/BZOJ1272:Gate Of Babylon(生成函數+廣義二項式定理+盧卡斯定理)

題面 首先問題可以差分 對於每一罐都搞一個生成函數 大概是1−xm+11−x1−xm+11−x 總方案數的生成函數就是 1(1−x)n∏i=1n(1−mi)1(1−x)n∏i=1n(1−mi) =(1−x)−n∏i=1n

原创 51nod1355:斐波那契的最小公倍數(數論)

題面 題意給出n個a,問LCM{ f(a) },f爲斐波那契數。 知乎靠譜的題解 記住這兩個路人性質就好 ①容斥求LCM lcm{S}=∏T⊆S,T≠∅gcd{T}(−1)|T|+1lcm{S}=∏T⊆S,T≠∅gcd{T}

原创 BZOJ4259:殘缺的字符串(FFT+卡常)

題面 題意:兩個串A和B,有通配符,問A在B中出現了幾次。 好題(除了卡常以外) 將通配符設爲0 枚舉開頭x 設f[x]=∑m−1i=0A[i]∗B[x+i]∗(A[i]−B[x+i])2f[x]=∑i=0m−1A[i]∗

原创 BZOJ3510:首都(LCT+啓發式Link)

題面 題意:一個森林,兩個操作,①連邊。②問一個連通塊的重心。 由於它只有連邊,所以我們可以搞個類似啓發式的東西 考慮一個小樹的u和一棵大樹的v連邊 重心一定打大樹裏面 設大樹的重心爲ro 則新的重心一定在ro到v的路徑上

原创 BZOJ4180:字符串計數(後綴自動機+Floyd+倍增+二分)

這題是打錯題號找到的 題面 題意:給出一個串,用它的子串前後拼接來生成串 問所以長爲n的串最少拼接次數的最大值 拼接次數最少就要求每個子串都要是極長的 即它不能和後一個子串的任何前綴形成新的子串 由於子串的某種性質,所以只