原创 bzoj 4026 dC Loves Number Theory (主席樹+數論+歐拉函數)

題目大意:給你一個序列,求出指定區間的(l<=i<=r) mod 1000777 的值 還複習了歐拉函數以及線性篩逆元 考慮歐拉函數的的性質,(l<=i<=r),等價於 (p[j]是區間內所有出現過的質數) 那麼考慮找出區間內所有出現過的

原创 bzoj 5249 [九省聯考2018]iiidx (線段樹+貪心)

題目大意:給你一個序列,讓你對它重新排列,保證a[i]<=a[i/k],求字典序最大的排列 洛谷傳送門 把i/k和i連邊,發現形成了一個類似於小根堆的樹形結構 先是一個錯誤的貪心:貪心每次選擇前size[x]大個數依次填到樹裏 這種方法在

原创 bzoj 1499 [NOI2005]瑰麗華爾茲 (單調隊列優化DP)

題目大意:給你一個n*m棋盤(n,m<=200),有一個人從給定的點s,e出發,有一些壞點不能走,一共給定k段連續的時間(k<=200),在某一段時間之內它只能向一個給定的方向移動,在某一時刻,它可以移動或者不移動。求碰到壞點之前/總時間

原创 bzoj 2150 部落戰爭 (二分圖匹配)

題目大意:給你一個n*m的棋盤,有一些壞點不能走,你有很多軍隊,每支軍隊可以像象棋裏的馬一樣移動,不過馬是1*2移動的,而軍隊是r*c移動的,軍隊只能從上往下移動,如果一個點已經被一直軍隊經過,那麼其他軍隊不能再經過這個點,求覆蓋所有非壞

原创 一些亂七八糟的數學結論

1.錯位排序的公式推導: 錯位排序數列:1,2,9,44,265...... 給出一個1~n的排列,現在把它打亂,讓每一位上的數和它的標號都不相同,求所有的打亂方案數 考慮1~n的全排列的數量,是 那麼,當某一位上的數和它的標號相同(其他

原创 NOIP 2017 時間複雜度 (模擬)

題目大意:略 傻了吧唧的我wa了好幾次 我的模擬功底真的不咋地 linux下用gets會報錯,我用的fgets #include <string> #include "stdio.h" #include <cstring> #inclu

原创 NOI 2016 優秀的拆分 (後綴數組)

題目大意:給你一個字符串,求所有子串的所有優秀拆分總和,優秀的拆分被定義爲一個字符串可以被拆分成4個子串,形如AABB,其中AA相同,BB相同,AB也可以相同 作爲一道國賽題,95分竟然就這麼給我們了!只是一個NOIP難度的哈希套DP啊.

原创 NOI 2015 品酒大會 (後綴數組+並查集)

題目大意:略 40分暴力還是很好寫的,差分再跑個後綴和 和 後綴最大值就行了 一種正解是後綴數組+並查集 但據說還有後綴數組+單調棧的高端操作蒟蒻的我當然不會 後綴數組求出height,然後從大到小排個序,那麼每次把最大height的兩個

原创 後綴自動機 模板

SAM板子,沒什麼好說的 建出來SAM然後跑個DFS統計答案就行了   #include <cmath> #include <cstdio> #include <cstring> #include <algorithm> #define

原创 中國剩餘定理(excrt) 模板

excrt板子題 #include <cmath> #include <cstdio> #include <cstring> #include <algorithm> #define ll long long #define N 10

原创 NOI 2018 屠龍勇士 (中國剩餘定理+exgcd)

題目大意:略 真是一波三折的一道國賽題,先學了中國剩餘定理,勉強看懂了模板然後寫的這道題 把取出的寶劍攻擊力設爲T,可得Ti*x=ai(mod pi),這顯然是ax=c(mod b)的形式 這部分用exgcd求解x的最小正整數解 先把a,

原创 bzoj 1009 [HNOI2008]GT考試 (KMP+矩陣乘法)

題目大意:給定一個由數字構成的字符串A(len<=20),讓你選擇一個長度爲n(n是給定的)字符串X,一個合法的字符串X被定義爲,字符串X中不存在任何一段子串與A完全相同,求互不相同的合法的字符串L的數量 第一眼看就沒啥思路....瞅了一

原创 poj 1743 [USACO5.1] Musical Theme (後綴數組+二分)

洛谷P2743傳送門 題目大意:給你一個序列,求其中最長的一對相似等長子串 一對合法的相似子串被定義爲: 1.任意一個子串長度都大於等於5 2.不能有重疊部分 3.其中一個子串可以在全部+/-某個值後和另一個串完全相同 還是老套路了,其實

原创 bzoj 1030 [JSOI2007]文本生成器 (Trie圖+DP)

題目大意:給你一堆字符串,一個串不合法的條件是這些字符串中任意一個是這個串的子串,求合法的串的數量 其實這道題比 [HNOI2008]GT考試 那道題好寫一些,但道理是一樣的 只不過這道題的答案可以轉化爲 所有可能的字符串(26^m)數量

原创 poj 2774 Long Long Message (後綴數組+二分)

題目大意:求兩個字符串的最長公共子串長度 把兩個串接在一起,中間放一個#,然後求出height 接下來是老套路,二分出一個答案ans,然後去驗證,如果有連續幾個位置的h[i]>=ans,且存在sa[i]的最大值在第二個串裏,最小值在第一個