P4345 SHOI2015 超能粒子炮 改

2022-05-19 11:49:47 字數 1127 閱讀 9688

傳送門

看到資料和模數大小就知道要上 lucas 了

然後開始愉快地推公式:

答案為 $\sum _^kc_^\ (mod\ 2333)$

設 $f [ i ] [ j ] = \sum _^jc_^\ (mod\ 2333)\ ,\ p=2333$

那麼根據 lucas 定理得 $f[n][k]=\sum _^k ^c_^}$

看到 $i/p$ 容易想到整除分塊,那就把 $i/p$ 相同的塊提出來看看

$=c_^ \sum _^^}+c_^ \sum _^^}+...+ c_^\sum _^^}$

把$\sum _^^}$ 提出來,得到

$=\sum _^^}(c_^+c_^+...+c_^)+ c_^\sum _^^}$

那就可以寫成 $=f[n\%p][p-1]\cdot f[n/p][k/p-1]+ c_^f[n\%p][k\%p]$

然後就可以遞迴下去求了

注意long long

#include#include

#include

#include

#include

using

namespace

std;

typedef

long

long

ll;inline ll read()

while(ch>='

0'&&ch<='

9')

return x*f;

}const

int m=3007,mo=2333

;inline ll fk(ll x)

intt;

ll n,k,f[m][m],c[m][m];

inline ll lucas(ll a,ll b)

//lucas不解釋

inline ll f(ll n,ll k)

void pre()//

預處理,注意c和f範圍不同

for(int i=0;i<=mo;i++)

for(int j=1;j<=mo;j++) f[i][j]=fk(f[i][j-1]+c[i][j]);

}int

main()

return0;

}

P4345 SHOI2015 超能粒子炮改

洛谷 曾經發明了腦洞 儀與超能粒子炮的發明家 shtsc 又公開了他的新發明 超能粒子炮 改 一種可以發射威力更加強大的粒子流的神秘裝置。超能粒子炮 改相比超能粒子炮,在威力上有了本質的提公升。它有兩個引數 n,k 它會向每個編號為 0 到 k 包含兩端 的位置i發射威力為 c bmod 2333 ...

SHOI2015 超能粒子炮 改

設 f n k sum kc n i pmod 那麼根據盧卡斯定理我們知道 f n k sum kc times c c 0 times sum c i c 1 times sum c i c times sum c i c times sum c i sum c i times c 0 c 1 c...

SHOI2015 超能粒子炮 改

求 sum 2333 n,k leq 10 如果直接套盧卡斯還是比較容易想到分塊求解的 由 c n i c times c 可知,i p 相同的組合數另一部分分別是 i p,i p 1,i p 2.這部分可以搓到一起 令 s n k sum 具體來說,將這部分相同的部分放到一起,剩下的地方直接計算 ...