有乙個紙片,紙片上有\(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 個人到終點的路徑之和最小是多少...