日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

P5363-[SDOI2019]移动金币【阶梯博弈,dp,组合数学】

發(fā)布時間:2023/12/3 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 P5363-[SDOI2019]移动金币【阶梯博弈,dp,组合数学】 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

正題

題目鏈接:https://www.luogu.com.cn/problem/P5363


題目大意

1×n1\times n1×n的網(wǎng)格上有mmm個硬幣,兩個人輪流向前移動一個硬幣但是不能超過前一個硬幣,無法移動者輸。
求有多少種情況先手必勝。


解題思路

竟然有我會的題,我感動

位置做差分再減去111之后就是一個經(jīng)典的階梯博弈問題了,結(jié)論就是奇數(shù)位置的異或和。

但是這題是計數(shù),先讓nnn減去mmm,然后正難則反考慮求總方案和后手必勝的情況,這樣問題就變?yōu)橛卸嗌賯€長度為mmm的非負(fù)整數(shù)序列滿足它們的和不超過nnn且奇數(shù)位置的異或和為000

考慮枚舉奇數(shù)位置的和,奇數(shù)位置個數(shù)為z=?m+12?z=\lfloor\frac{m+1}{2}\rfloorz=?2m+1??,設(shè)fif_ifi?表示zzz個數(shù)的和為iii時異或和為000的方案數(shù),這個狀態(tài)直接計算起來很難搞。

可以枚舉每一個位的111的數(shù)量,顯然每一個位的111數(shù)量肯是偶數(shù)。然后用組合數(shù)轉(zhuǎn)移即可。

然后設(shè)gig_igi?表示m?zm-zm?z個數(shù)和不超過iii的方案數(shù),那么有gi=∑j=0i(j+m?z?1m?z?1)g_i=\sum_{j=0}^i\binom{j+m-z-1}{m-z-1}gi?=j=0i?(m?z?1j+m?z?1?),前綴和轉(zhuǎn)移就好了。

然后答案就是(n+mm)?∑i=0nfign?i\binom{n+m}{m}-\sum_{i=0}^nf_ig_{n-i}(mn+m?)?i=0n?fi?gn?i?(注意這里的nnn已經(jīng)減去mmm了),因為模數(shù)不是質(zhì)數(shù)直接楊輝三角求就好了。

時間復(fù)雜度O(nmlog?m)O(nm\log m)O(nmlogm),當(dāng)然肯定是跑不滿的


code

#include<cstdio> #include<cstring> #include<algorithm> #define ll long long using namespace std; const ll N=2e5,P=1e9+9; ll n,m,ans,c[N][51],f[N],g[N]; signed main() {scanf("%lld%lld",&n,&m);ans=0;if(n<=m)return puts("0")&0;c[0][0]=1;for(ll i=1;i<=n;i++)for(ll j=0;j<=min(i,m);j++)c[i][j]=((j?c[i-1][j-1]:0)+c[i-1][j])%P;n-=m;ll z=(m+1)/2;f[0]=1;for(ll i=1;i<=18;i++)for(ll j=n;j>=0;j--)for(ll k=1;k<=z/2;k++){if(j<(k*(1<<i)))break;(f[j]+=f[j-k*(1<<i)]*c[z][2*k]%P)%=P;}for(ll i=0;i<=n;i++)g[i]=(g[i-1]+c[i+m-z-1][m-z-1])%P;for(ll i=0;i<=n;i++)(ans+=f[i]*g[n-i]%P)%=P;printf("%lld\n",(c[n+m][m]-ans+P)%P);return 0; }

總結(jié)

以上是生活随笔為你收集整理的P5363-[SDOI2019]移动金币【阶梯博弈,dp,组合数学】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。