紀中集訓2019 3 25 染色問題

2022-04-06 12:55:24 字數 1009 閱讀 9567

​ 有乙個紙片,紙片上有\(n\)個格仔,初始時沒有顏色;

​ 某個遊戲的內容是進行\(m\)次染色,使得染完後\(n\)個格仔一定有顏色;

​ 每次可以選擇乙個區間\([l,r](l \le r)\)去染(不能不染),顏色可以覆蓋;

​ 問最後染出的序列有多少種;

​ \(n,m \le 10^6\) ;

說正解:

方程中存在兩類貢獻,一種是\(f_ \times (j+1)\),一種是\(f_\times 1\);

同時要求最後一次轉移一定是第二種;

列舉第一種轉移的次數\(k\),求得貢獻和後乘以\((^_)\) ,

考慮每次更新之後的形成的第一種轉移次數的序列:\(0 \lt a_1 \lt a_2 \ \lt ,\cdots, \lt a_k = n\) ;

對於一種轉移序列的貢獻就是:\((a_1+1)\cdots(a_+1)\) ;

這其實是\([x^]\pi_^(x+i+1)\) ;

所以答案是:\(\sum_^ (^_)[x^]\pi_^(x+i+1)\);

類似倍增可以\(nlogn\) ;

#include#define ll long long

#define mod 998244353

#define il inline

using namespace std;

const int n=4000010;

int n,m,fac[n],inv[n],len,l,rev[n],f[n],g[n],a[n],b[n];

il int pw(int x,int y)

return re;

}il void inc(int&x,int y)

const int g=3;

il void ntt(int*a,int f)

for(int i=0,pwn=1;i<=n;++i,pwn=(ll)pwn*n%mod)

ntt(a,1);ntt(b,1);

for(int i=0;i

紀中集訓2019 11 05

題目鏈結 有 n 個點,求 n 1 個完美匹配,且其中不出現相同的邊。n le 10 3 打暴力 手玩找到規律。把匹配放到方格圖上,給屬於同乙個完美匹配的方格染上同樣的顏色,發現兩個性質 最後一列第一行填 n 之後往下從小到大填完偶數,再從小到大填完奇數 forall i in 1,n 1 從 1,...

紀中集訓 遊戲

題目鏈結 是紀中的題,不過我已經沒有紀中的號了,於是翻出了我的古早部落格 複習的時候又做了一遍,還是想了一會兒的,並且由衷地覺得這真是一道好題。考慮 sg 函式遞推。由於每次操作只能動最後一行和最後一列,那麼設 sg i,j 表示以 i,j 結尾的矩陣的 sg 函式值。轉移有 sg i,j mex ...

紀中集訓2019 3 21 橋

描述 有 m 條河,每條河的兩邊有居民點,所以共有 m 1 排居名點 如果要從一排居名點到另一排相鄰的居民點需要過河 現在有 n 個人,每個人的起點座標是 p s 終點 q t 你可以在每條河上修建一座橋,過河必須通過橋 相鄰居民點距離為 1 不考慮過河的時間 問 n 個人到終點的路徑之和最小是多少...