BZOJ 4870 HEOI2017 組合數問題

2022-05-01 04:30:10 字數 806 閱讀 2062

題面:

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 #include

3using

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

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個自動機,如第乙個詢問拿出...