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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

[分治FFT]「CTSC2018」青蕈领主

發布時間:2025/3/14 编程问答 13 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [分治FFT]「CTSC2018」青蕈领主 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目梗概

定義一個序列是連續的,當且僅當這個序列的最大值-最小值不超過序列長度-1.

現在有一個長度為\(n\)的排列,給出以每個位置為右端點的最長連續區間的長度,求滿足的排列的方案數.

解題思路

如果\(a[n]!=n\)且有區間相交顯然無解.

那么我們可以根據區間的包含關系建出一棵以\(n\)為根的樹,用\(s[i]\)表示節點\(i\)的兒子個數.

因為連續的區間可以看成一個點,所以每個節點的貢獻可以分別考慮.

定義\(f[i]\)為長度有多少\(n+1\)的連續序列,滿足在刪去最大值后不存在長度大于\(1\)的連續序列

那么最后答案顯然是\(\prod f[s[i]]\).

考慮\(f[i]\)的轉移.

如果從合法方案轉來,只要最后一個數不等于\(i\)即可,方案數為\((i-1)f[i-1]\)

如果從不合法方案轉來,那么不滿足的區間只有有一個,長度設為\(l\),把最大值插入形成合法區間的方案數為\(f[l]\),把插入后的區間看成一個點,與剩下的點的方案數為\(f[i-l]\),若要保證有解,那么這個區間的范圍一定在\([2,i-l]\),所以得到:
\[ f[i]=(i-1)f[i-1]+\sum_{l=2}^{i-2}(i-l-1)f[i]f[i-l] \]
\(f\)用分治FFT預處理即可.

#include<cstdio> #include<algorithm> #define LL long long using namespace std; const int tt=998244353,g=3;; const int maxn=1400005; char nc(){static char buf[100000],*l=buf,*r=buf;if (l==r) r=(l=buf)+fread(buf,1,100000,stdin);if (l==r) return EOF;return *l++; } inline int _read(){int num=0;char ch=nc();while(ch<'0'||ch>'9') ch=nc();while(ch>='0'&&ch<='9') num=num*10+ch-48,ch=nc();return num; } int n,T,f[maxn],A[maxn],B[maxn],re[maxn],a[maxn],top,que[maxn],s[maxn],ans,pd; int qsm(LL w,int b){int num=1;while(b){if (b&1) num=(LL)num*w%tt;w=(LL)w*w%tt;b>>=1;}return num;} void NTT(int a[],int f,int n){for (int i=0;i<n;i++) if (i<re[i]) swap(a[i],a[re[i]]);for (int i=1;i<n;i<<=1){int wn=qsm(g,(tt-1)/(i<<1)),w=1,x,y;if (f<0) wn=qsm(wn,tt-2);for (int j=0;j<n;j+=(i<<1),w=1)for (int k=0;k<i;k++,w=(LL)w*wn%tt){x=a[j+k];y=(LL)a[j+k+i]*w%tt;a[j+k]=(x+y)%tt;a[j+k+i]=(x-y+tt)%tt;}}if (f<0) for (int i=0,INV=qsm(n,tt-2);i<n;i++) a[i]=(LL)a[i]*INV%tt; } void work(int l,int r){if (l==r){if (l==2) f[l]=2;else f[l]=(f[l]+(LL)f[l-1]*(l-1)%tt)%tt;return;}int mid=l+(r-l>>1);work(l,mid);int m,len=0;for (m=1;m<=(r-l+1)*2;m<<=1) len++;for (int i=0;i<m;i++) re[i]=((re[i>>1]>>1)|(i&1)<<(len-1));for (int i=0;i<m;i++) if (i+l<=mid) A[i]=(LL)f[i+l]*(i+l-1)%tt;else A[i]=0;for (int i=0;i<m;i++) if (i<=r-l) B[i]=f[i];else B[i]=0;NTT(A,1,m);NTT(B,1,m);for (int i=0;i<m;i++) A[i]=(LL)A[i]*B[i]%tt;NTT(A,-1,m);for (int i=mid+1;i<=r;i++) f[i]=(f[i]+A[i-l])%tt;if (l!=2){for (int i=0;i<m;i++) if (i+l<=mid) A[i]=f[i+l];else A[i]=0;for (int i=0;i<m;i++) if (i<=r-l) B[i]=(LL)f[i]*(i-1)%tt;else B[i]=0;NTT(A,1,m);NTT(B,1,m);for (int i=0;i<m;i++) A[i]=(LL)A[i]*B[i]%tt;NTT(A,-1,m);for (int i=mid+1;i<=r;i++) f[i]=(f[i]+A[i-l])%tt;}work(mid+1,r); } void work(){for (int i=1;i<=n;i++) a[i]=_read(),s[i]=0;if (a[n]!=n){printf("0\n");return;}top=1;que[1]=n;pd=0;for (int i=n-1;i>=1;i--){while(i<que[top]-a[que[top]]+1) top--;if (i-a[i]<que[top]-a[que[top]]) pd=1;s[que[top]]++;que[++top]=i; }if (pd){printf("0\n");return;}ans=1;for (int i=1;i<=n;i++) ans=(LL)ans*f[s[i]]%tt;printf("%d\n",ans); } int main(){freopen("exam.in","r",stdin);freopen("exam.out","w",stdout);T=_read();n=_read();work(2,n-1);f[0]=1;f[1]=2;while(T--) work();return 0; }

轉載于:https://www.cnblogs.com/CHNJZ/p/10554019.html

總結

以上是生活随笔為你收集整理的[分治FFT]「CTSC2018」青蕈领主的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 国产精品亚洲色图 | 亚洲黄色免费看 | 亚洲αv | 97黄色网 | 开心激情五月网 | 午夜亚洲aⅴ无码高潮片苍井空 | 伊人狼人久久 | 久久久高潮 | 色牛av| 97干在线视频 | 色av网| 91美女片黄 | 黄视频网站在线观看 | 最新日韩视频 | 中国女人内谢69xxxx | 久久高清无码视频 | 亚洲国产高清在线 | 久久福利电影 | 国产精品高潮呻吟AV无码 | 久草婷婷| 日本免费福利视频 | 熟妇人妻av无码一区二区三区 | 青青草视频免费 | 亚洲一二区在线 | 精品动漫一区二区三区 | 华人在线视频 | 国产欧美二区 | 特级做a爱片免费69 少妇第一次交换又紧又爽 亚洲大胆人体 | 四虎4hu永久免费网站影院 | 销魂美女一区二区 | 韩日视频| 午夜av在线免费观看 | 日韩毛片免费观看 | 亚洲人人夜夜澡人人爽 | 国产911在线观看 | 国产小视频在线观看免费 | 国产乱淫av片免费看 | 电影91久久久 | 国产视频久久久久 | 国产91精品一区二区麻豆亚洲 | 在线观看免费成人 | 女同性做受全过程动图 | 毛片aaaaaa| 手机亚洲第一页 | 成人欧美一区二区三区黑人动态图 | 粉嫩av一区二区三区免费观看 | 国产r级在线 | 成av人片一区二区三区久久 | 国产午夜视频在线播放 | av漫画在线观看 | 日韩精品在线免费看 | 国产在线观看免费视频软件 | av色资源 | 亚洲大尺度视频 | 老司机性视频 | 韩国成人免费视频 | 日韩3区| 欧美一区二区三区日韩 | 中文字幕少妇 | 欧美一区二区三区电影 | 少妇人妻好深好紧精品无码 | 高清中文字幕在线a片 | 欧美色图片区 | 中文字幕理伦片免费看 | 不许穿内裤随时挨c调教h苏绵 | 中文字幕一区视频 | 成年人午夜网站 | 国产精品一区av | 草在线视频| 国产在线精| 台湾a级片 | 亚洲女人网 | 久久av资源 | 日本一二三不卡视频 | 欧美亚洲黄色 | 超碰2022| 91爱| 国产大学生视频 | 一区二区三区在线观看视频 | 成人小视频免费看 | 国产三级中文字幕 | 色综合av| 日本黄视频在线观看 | 老妇荒淫牲艳史 | 欧美不卡视频在线观看 | 国产片网站 | 亚洲高清在线一区 | 激情视频在线免费观看 | 亚洲欧美另类视频 | 超碰激情| 国产偷v| 亚洲AV无码AV吞精久久中文版 | 婷婷激情六月 | 欧美啪啪网站 | 成 人 黄 色 片 在线播放 | 色悠悠网 | 日韩免费精品 | 午夜美女福利 | 国产91精品一区二区 |