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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

CF848E-Days of Floral Colours【dp,分治NTT】

發布時間:2023/12/3 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CF848E-Days of Floral Colours【dp,分治NTT】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

正題

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


題目大意

2n2n2n個花排成一個圓環,nnn種顏色每種兩個,要求兩個相同顏色之間最小距離為1,21,21,2nnn

對于一種染色方案的權值為:刪除掉距離為nnn的顏色后,剩下的連續段長度的乘積。

求所有方案的染色之和對998244353998244353998244353取模。

1≤n≤500001\leq n\leq 500001n50000


解題思路

環好像很麻煩,先考慮線段上的,現在有兩個長度為nnn的數列,然后距離為nnn的點之間對應。染色可以看為連接兩個點。

然后設gig_igi?表示不使用跨越數列的連線,涂iii個的方案數,那么有gi=gi?2+gi?4g_i=g_{i-2}+g_{i-4}gi?=gi?2?+gi?4?(相鄰的連接/兩個都是隔著對方連)。

然后考慮有跨越數列的線的方案,且沒有其他連線跨過這條線,f0if0_if0i?表示第iii個是滿足條件的線的權值和。f1if1_if1i?則表示剛好有一對距離為222的點對跨越這個線的權值和。
那么有轉移方程
f0i=gii2+∑j=0i?1gjj2f0i?j?1+∑j=0i?3gj(j+1)2f1i?j?3f0_i=g_ii^2+\sum_{j=0}^{i-1}g_jj^2f0_{i-j-1}+\sum_{j=0}^{i-3}g_j(j+1)^2f1_{i-j-3}f0i?=gi?i2+j=0i?1?gj?j2f0i?j?1?+j=0i?3?gj?(j+1)2f1i?j?3?
(第一個是全程沒有其他橫跨邊,第二個是上一條橫跨邊兩邊沒有同色,第三個是上一條橫跨邊兩邊有同色)
同理可以得到f1f1f1的方程
f1i=gi(i+1)2+∑j=0i?1gj(j+1)2f0i?j?1+∑j=0i?3gj(j+2)2f1i?j?3f1_i=g_i(i+1)^2+\sum_{j=0}^{i-1}g_j(j+1)^2f0_{i-j-1}+\sum_{j=0}^{i-3}g_j(j+2)^2f1_{i-j-3}f1i?=gi?(i+1)2+j=0i?1?gj?(j+1)2f0i?j?1?+j=0i?3?gj?(j+2)2f1i?j?3?

得到f0f0f0f1f1f1之后,看一下f0,f1f0,f1f0,f1都是最左邊沒有距離為222的邊越過的,但是我們轉換到環上的時候需要考慮這種情況,所以我們設f2if2_if2i?表示左右兩邊的橫跨邊都有同色的,中間距離為iii的權值和。
方程是
f2i=gi(i+2)2+∑j=0i?1gj(j+1)2f0i?j?1+∑j=0j?3gj(j+2)2f1i?j?3f2_i=g_i(i+2)^2+\sum_{j=0}^{i-1}g_j(j+1)^2f0_{i-j-1}+\sum_{j=0}^{j-3}g_j(j+2)^2f1_{i-j-3}f2i?=gi?(i+2)2+j=0i?1?gj?(j+1)2f0i?j?1?+j=0j?3?gj?(j+2)2f1i?j?3?

然后考慮轉換到行上。

如果只有一個點對距離是nnn,那么貢獻是(n?1)(n-1)(n?1),有nnn種旋轉方法,如果這個點對兩邊沒有同色點,那么方案數是gn?1g_{n-1}gn?1?,否則是gn?3g_{n-3}gn?3?,所以這種情況的方案是(n?1)2n(gn?1+gn?3)(n-1)^2n(g_{n-1}+g_{n-3})(n?1)2n(gn?1?+gn?3?)

然后剩下的我們可以先固定1~n+11\sim n+11n+1,然后枚舉第二個距離為nnn的點對。設為iii,那貢獻就是i(i?1)2(gi?1f0n?i?1+2gi?2f1n?i?2+gi?3f2n?i?3)i(i-1)^2(g_{i-1}f0_{n-i-1}+2g_{i-2}f1_{n-i-2}+g_{i-3}f2_{n-i-3})i(i?1)2(gi?1?f0n?i?1?+2gi?2?f1n?i?2?+gi?3?f2n?i?3?)

然后前面求f0,f1,f2f0,f1,f2f0,f1,f2都可以用分治NTTNTTNTT搞。

時間復雜度O(nlog?2n)O(n\log^2 n)O(nlog2n)

如果用生成函數再推推可以分別得到O(n)O(n)O(n)O(nlog?n)O(n\log n)O(nlogn)的方法。

還有可以用生成函數發現這是一個161616項的線性遞推式,打出前面的表再用高斯消元得到系數,可以把時間優化到logloglog級別

路還很長啊


code

#include<cstdio> #include<cstring> #include<algorithm> #define ll long long using namespace std; const ll N=2e5+10,P=998244353; ll n,m,r[N],g[N],h[3][N],f[3][N]; ll t[3][N],T[2][N],z[4][N]; ll power(ll x,ll b){ll ans=1;while(b){if(b&1)ans=ans*x%P;x=x*x%P;b>>=1;}return ans; } void Glen(ll n){m=1;while(m<=n)m<<=1;for(ll i=0;i<m;i++)r[i]=(r[i>>1]>>1)|((i&1)?(m>>1):0);return; } void NTT(ll *f,ll op){for(ll i=0;i<m;i++)if(i<r[i])swap(f[i],f[r[i]]);for(ll p=2;p<=m;p<<=1){ll len=(p>>1),tmp=power(3,(P-1)/p);if(op==-1)tmp=power(tmp,P-2);for(ll k=0;k<m;k+=p){ll buf=1;for(ll i=k;i<k+len;i++){ll tt=buf*f[i+len]%P;f[i+len]=(f[i]-tt+P)%P;f[i]=(f[i]+tt)%P;buf=buf*tmp%P;}}}if(op==-1){ll inv=power(m,P-2);for(ll i=0;i<m;i++)f[i]=f[i]*inv%P;}return; } void CDQ(ll l,ll r){if(l==r){(f[0][l]+=h[0][l])%=P;(f[1][l]+=h[1][l])%=P;return;}ll mid=(l+r)>>1;CDQ(l,mid);Glen((r-l+1)*2);for(ll i=0;i<m;i++)t[0][i]=t[1][i]=t[2][i]=T[0][i]=T[1][i]=0;for(ll i=0;i<=r-l+1;i++)t[0][i]=h[0][i],t[1][i]=h[1][i],t[2][i]=h[2][i];for(ll i=0;i<=mid-l;i++)T[0][i]=f[0][i+l],T[1][i]=f[1][i+l];NTT(t[0],1);NTT(t[1],1);NTT(t[2],1);NTT(T[0],1);NTT(T[1],1);for(ll i=0;i<m;i++){z[0][i]=t[0][i]*T[0][i]%P,z[1][i]=t[1][i]*T[1][i]%P;z[2][i]=t[1][i]*T[0][i]%P,z[3][i]=t[2][i]*T[1][i]%P;}NTT(z[0],-1);NTT(z[1],-1);NTT(z[2],-1);NTT(z[3],-1);for(ll i=0;i<=r-l+1;i++){if(l+i+1>mid&&l+i+1<=r){f[0][l+i+1]=(f[0][l+i+1]+z[0][i])%P;f[1][l+i+1]=(f[1][l+i+1]+z[2][i])%P;}if(l+i+3>mid&&l+i+3<=r){f[0][l+i+3]=(f[0][l+i+3]+z[1][i])%P;f[1][l+i+3]=(f[1][l+i+3]+z[3][i])%P;}}CDQ(mid+1,r);return; } void solve(ll l,ll r){if(l==r){(f[2][l]+=h[2][l])%=P;return;}ll mid=(l+r)>>1;solve(l,mid);Glen((r-l+1)*2);for(ll i=0;i<m;i++)t[1][i]=t[2][i]=T[0][i]=T[1][i]=0;for(ll i=0;i<=r-l+1;i++)t[1][i]=h[1][i],t[2][i]=h[2][i];for(ll i=0;i<=mid-l;i++)T[0][i]=f[1][l+i],T[1][i]=f[2][l+i];NTT(t[1],1);NTT(t[2],1);NTT(T[0],1);NTT(T[1],1);for(ll i=0;i<m;i++){z[0][i]=t[1][i]*T[0][i]%P;z[1][i]=t[2][i]*T[1][i]%P;}NTT(z[0],-1);NTT(z[1],-1);for(ll i=0;i<r-l+1;i++){if(l+i+1>mid&&l+i+1<=r)(f[2][l+i+1]+=z[0][i])%=P;if(l+i+3>mid&&l+i+3<=r)(f[2][l+i+3]+=z[1][i])%=P;}solve(mid+1,r);return; } signed main() {freopen("a.in","r",stdin);freopen("a.out","w",stdout);scanf("%lld",&n);g[0]=g[2]=1;for(ll i=4;i<=n;i++)g[i]=(g[i-4]+g[i-2])%P;for(ll i=0;i<=n;i++){h[0][i]=g[i]*i%P*i%P;h[1][i]=g[i]*(i+1)%P*(i+1)%P;h[2][i]=g[i]*(i+2)%P*(i+2)%P;}CDQ(0,n);solve(0,n);ll ans=(g[n-1]+g[n-3])*(n-1)%P*(n-1)%P*n%P;for(ll i=2;i<n-1;i++){ll tmp=g[i-1]*f[0][n-i-1]%P;tmp=(tmp+2*g[i-2]*f[1][n-i-2]%P)%P;tmp=(tmp+g[i-3]*f[2][n-i-3]%P)%P;tmp=tmp*i%P*(i-1)%P*(i-1)%P;ans=(ans+tmp)%P;}printf("%lld\n",ans);return 0; }

總結

以上是生活随笔為你收集整理的CF848E-Days of Floral Colours【dp,分治NTT】的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日本美女日批视频 | 亚洲一区二区三区免费在线观看 | 男女啪啪无遮挡 | 九一av| 亚洲视频综合 | 男人与雌宠物交h | 成人在线免费播放视频 | а√天堂8资源在线官网 | 在线不卡国产 | 日韩经典午夜福利发布 | 熟妇人妻无乱码中文字幕真矢织江 | 亚洲啪啪免费视频 | 日本美女久久久 | 国产嫩草在线观看 | 国产69精品久久久久久久久久 | 欧美在线视频播放 | 精品在线视频一区二区 | 欧美成人h| 亚洲图片欧美激情 | 欧美精品乱码久久久久久 | 午夜色片| 欧美a级肉欲大片xxx | 欧美黑人疯狂性受xxxxx喷水 | 国产主播精品在线 | 超碰日日夜夜 | 视频免费在线观看 | 午夜时刻免费入口 | 狼友视频国产精品 | 中文字幕一区二区三区四区不卡 | 羞羞漫画在线播放 | 日韩一二在线 | 免费在线观看黄色av | 国产第一av | www.亚洲精品| 亚洲啪av永久无码精品放毛片 | 男人操女人视频网站 | 亚洲国产精品久久久久爰性色 | 国产日韩欧美在线观看视频 | 日韩一区二区三区四区五区 | 国产一区二区在线免费观看视频 | 丁香在线视频 | 在线h片 | 欧洲a级片| 久久综合九色综合欧美狠狠 | 天海翼av | 欧美夜夜操 | 欧美激情精品久久久久久 | 国产粉嫩在线 | 国产精品99久久久久久一二区 | 欧美日本黄色 | 亚洲啪啪网| 色综合天天综合网天天狠天天 | 免费看黄色小视频 | 日韩精品人妻一区二区三区免费 | 天天操夜夜操 | 涩色网| 一区二区不卡 | 四虎永久在线精品免费一区二区 | 中文字幕人妻伦伦 | 欧美日韩国产激情 | 伊人一区| 日韩欧美二区 | 丁香六月av | 日韩午夜在线视频 | 99在线看| 日韩美女视频在线观看 | 欧美特黄 | 亚洲激情在线视频 | 操小妞 | 久久久久久爱 | 亚洲三级图片 | 久草免费在线观看 | 超碰资源 | 免费无码肉片在线观看 | 星空无限mv国产剧入选 | 男女床上拍拍拍 | 男女做爰猛烈高潮描写 | 性欧美激情| 亚洲性少妇 | 中文字幕av免费在线观看 | 日韩av网址大全 | 亚洲黄视频 | 91丝袜一区二区三区 | 蜜桃成人在线视频 | 在线视频a| 超碰免费在线播放 | 欧美另类国产 | 91九色精品 | 制服丝袜成人动漫 | 四虎影视www在线播放 | 亚日韩 | 永久av在线 | 视频在线观看一区二区 | 日韩色av| 日韩欧美99 | 秋霞网一区二区三区 | 青青伊人久久 | 网站久久久| 国产精品有码 |