Luogu P3746組合數問題(矩陣)

2022-05-01 00:54:07 字數 610 閱讀 8354

題目鏈結

哇我乙個活人的智商被題目碾壓了

可以把問題轉化為有nk個物品,問拿i件物品的方案數有多少種,其中i%k=r。

然後矩陣乘法加速dp即可。

#include#include

#include

#include

#include

#define maxn 55

using

namespace

std;

inline

long

long

read()

while

(isdigit(ch))

return num*f;

}int m;long

long

mod,n,r;

struct

matrix

matrix

operator *(matrix a)

}start,d;

matrix pow(matrix a,

long

long

b)

return

ret;

}int

main()

題解 lg3746 組合數問題

題面 式子看起來很嚇人哈 不過我們來考慮它的實際意義 就是在 nk 個物品中選擇 模k餘數為r 的方案數和 設 f i,j 表示選 在 i 個物品中選擇 模k餘數為j 的方案數和 容易得到 f i,j f i 1,j 1 f i 1,j 當然,為了避免負數,我們寫成這種模樣 f i,j f i 1,...

LUOGU P2822 組合數問題

題面 由於要求對k取模為0的值,所以我們遞推求組合數時一直對k取模就行了 然後算出二維字首和,o n 2 預處理,o 1 回答。bzoj上和這個不太一樣,那個是要盧卡斯定理。include define ll long long using namespace std const int maxn ...

luogu P2822 組合數問題

題面傳送門 對於這道題,其實題目很簡單,暴力很好打。想法1 11 對於每組輸入資料,暴力判斷兩重迴圈列舉,一重迴圈計算組合數。時間複雜度o t n3 o tn 3 o tn3 大概30 3030 分想法2 22 把每組數的組合存下來,直接呼叫。時間複雜度o t n2 o tn 2 o tn2 大概3...