原创 LOJ#2303. 「NOI2017」蚯蚓排隊 hash+鏈表

正常來說,單次操作的複雜度是 $O(k^2)$,然後整體複雜度是 $O(nk^2)$.    但是我們發現每次合併兩個蚯蚓的複雜度的極限是 $O( min(size_{min},50) \times 50)$.  然後根據啓發式合併的複雜度

原创 UOJ#523. 【美團杯2020】半前綴計數 後綴自動機

比較好的一道後綴自動機題.       先枚舉必選的前綴 $[1,k]$ 然後加上 $[k+1,n]$ 中本質不同子串個數.      但是這樣的話會算重.   考慮哪些地方算多了:     假設 $i-1$ 的前綴爲 $pre[i-1]$

原创 LuoguP6688 可重集 線段樹+hash

線段樹加 hash 判重模板題.   hash 的話必須要用雙 base 哈希,否則會 WA.    然後這道題中最好不要用自然溢出,感覺比取模還要慢一些.     由於讀入量巨大,必須要開讀入優化才能過.    哈希的方式就是對於每個數維

原创 LuoguP6687 論如何玩轉 Excel 表格 樹狀數組

找規律+猜結論.      不難發現這個旋轉 180 度其實是對於一個 $2 \times 2$ 的正方形內部對角線分別交換.     所以對於這個 $2 \times n$ 的數組來說可以將所有格子分成兩類,這兩類互不干擾.    那麼判

原创 LOJ#6289. 花朵 樹鏈剖分+分治NTT

本來以爲這道題會非常難調,但是沒想到調了不到 5 分鐘就 A 了.   由於基於多項式的運算都可以方便地進行封裝,所以細節就不是很多(或者說幾乎沒有細節)    題意:給定一棵樹,每個點有點權,求對於所有大小爲 $m$ 的獨立集的點權之積的

原创 LOJ#3302. 「聯合省選 2020 A | B」信號傳遞 狀壓DP+卡常

對於 $x,y$ 如果 $x$ 在 $y$ 的左面那麼 $x \rightarrow y$ 的貢獻是 $pos[y]-pos[x]$   $y \rightarrow x$ 的貢獻是 $pos[x] \times k+pos[y] \tim

原创 LuoguP4931 [MtOI2018]情侶?給我燒了!(加強版) 組合

不妨枚舉哪些位置和睦,然後計算其他位置都不和睦的方案數.    令 $f[i]$ 表示 $i$ 對情侶都不和睦的方案數.   然後 $f[i]$ 的轉移和錯位排列比較相似,即讓情侶 $(i,i')$ 與 $(x,y)$ 合併或者 $(x,x

原创 LOJ#2541. 「PKUWC2018」獵人殺 容斥+分治NTT

真——分治NTT      code:  #include <cstdio> #include <vector> #include <cstring> #include <algorithm> #define N 100009

原创 LOJ#2540. 「PKUWC2018」隨機算法 狀壓DP+組合

令 $f[S]$ 表示所選的排列可以生成出 $S$ 的最大獨立集且點集 $S$ 全部在序列中的方案數.    那麼我們選一個沒有被覆蓋的點 $j$,令 $sta[j]$ 表示 $j$ 及 $j$ 覆蓋的點集.    那麼有 $f[S|sta

原创 LOJ#3120. 珍珠 容斥+生成函數+NTT

神仙多項式可還行.     code:  #include <cstdio> #include <vector> #include <cstring> #include <algorithm> #define N 100009

原创 LuoguP5349 冪 分治NTT

比較神仙的推導.     求 $\sum_{n=0}^{ \infty }s(n)r^n$,其中 $s(x)$ 是一個 $m$ 次多項式,$0\leqslant r \leqslant 1$ 顯然可以 $s(x)$ 每一個係數的貢獻,那麼就

原创 LOJ#575. 「LibreOJ NOI Round #2」不等關係 容斥+分治NTT

容斥+分治NTT.     令 $dp[i]$ 表示以 $i$ 結尾的方案數.   如果只有小於號的話 $dp[i]$ 是非常好求的:$\frac{n!}{\prod a_{i}}$ 即總階乘除以每一個小於號連續段.     有大於號的時候

原创 LOJ#6247. 九個太陽 單位根反演

複習一下單位根反演: $[k|n]=\frac{1}{k} \sum_{i=0}^{k-1} w_{k}^{ni}$,即 $[n \% k=0]$     最前面那個 $\frac{1}{k}$ 不要忘記,也不要寫錯!!! 當 $n$ 很大

原创 LOJ#6261. 一個人的高三樓 組合+NTT

令 $f(i,j)$ 表示 $j$ 的 $i$ 階前綴和.   那麼有 $f(i,j)=\sum_{j=1}^{i} f(i-1,j)$,這個可以直接多項式快速冪.   時間複雜度是 $O(n \log^2 n)$  或 $O(n \log

原创 LOJ#6198. 謝特 SAM+啓發式合併+01trie

並不難的一道字符串題.   顯然後綴自動機上進行字典樹的啓發式合併.   但是一定注意,題中要求的是兩個後綴的 LCP 而不是兩個前綴的 LCP.  所以在構建後綴自動機的時候要從後向前構建.   剛開始從前向後構建 WA 了半天.   然