題面:
time limit: 10 sec memory limit: 512 mb
submit: 484 solved: 242
[submit][status][discuss]
第一行有四個整數 n, p, k, r,所有整數含義見問題描述。
1 ≤ n ≤ 10^9, 0 ≤ r < k ≤ 50, 2 ≤ p ≤ 2^30 − 1
一行乙個整數代表答案。
2 10007 2 0
8這題和組合數一點關係都沒有!!!!!
將問題轉化一下:
求從n*k個物品中選出被k除餘數為r個物品的方案數。
令f[i][j]為前i個物品中選出j個的方案數
f[i][j]=f[i-1][j]+f[i-1][j-1]
變形後得到f[i+j][x+y]+=f[i][x]*f[j][y]然後就可以高高興興的矩陣快速冪了
時間複雜度o(k3log2n)
1 #include2 #includebzoj 48703using
namespace
std;
4#define ll long long
5int
n,p,k,r;
6int add(int x,inty)7
11struct
martix
1218 martix operator * (const martix&b) const
19
26};
27int
main()
28
BZOJ 4870 HEOI 2017 組合數問題
第一行有四個整數 n,p,k,r,所有整數含義見問題描述。1 n 10 9,0 r k 50,2 p 2 30 1 一行乙個整數代表答案。我也是很迷呢,這題如果用組合數公式 性質硬搞什麼也搞不出來,然後就用組合數的實際意義好了,c i,j 表示從i個物品中選出j個的方案數,那麼原題就是從n k個物品...
bzoj 4870 組合數問題
目錄求 sum c mod p 原題傳送門。這不是單位根反演裸題嗎 注意到模數並沒有特殊性質,可以想到從組合數的遞推公式入手。當 k 1 實際上就是快速冪,所以聯想到說不定可以矩陣冪優化。記 f n r sum c 則 f n r sum c times f r j mod k 從組合意義上不難理解...
bzoj4032 HEOI2015 最短不公共子串
字尾自動機 序列自動機 序列自動機這東西好像很高階的樣子。其實很簡單的啦。詳細可以看一下我的部落格序列自動機 對字串a構建字尾自動機 str a 和序列自動機 seq a 類似地,對字串b也構建字尾自動機 str b 和序列自動機 seq b 然後對於4個詢問我們分別拿出1個自動機,如第乙個詢問拿出...