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

歡迎訪問(wèn) 生活随笔!

生活随笔

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

编程问答

【BZOJ 4555】[Tjoi2016Heoi2016]求和 多项式求逆/NTT+第二类斯特林数

發(fā)布時(shí)間:2025/6/17 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【BZOJ 4555】[Tjoi2016Heoi2016]求和 多项式求逆/NTT+第二类斯特林数 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

出處0.0
用到第二類斯特林?jǐn)?shù)的性質(zhì),做法好像很多,我打的是直接ntt,由第二類斯特林?jǐn)?shù)的容斥公式可以推出,我們可以對(duì)于每一個(gè)i,來(lái)一次ntt求出他與所有j組成的第二類斯特林?jǐn)?shù)的值,這個(gè)時(shí)候我們是O(n^2logn)的,還不如暴力,但是我們發(fā)現(xiàn),對(duì)于剛剛提到的容斥的式子,將其化為卷積形式后,其一邊的每一項(xiàng)對(duì)于每一個(gè)i都相同,另一邊的每一項(xiàng)是對(duì)于所有的i形成一個(gè)n項(xiàng)的等比數(shù)列,這樣我們可以把成等比數(shù)列的一邊求和,用固定的一邊去卷他們的和,這時(shí)候的答案的每一項(xiàng)就是所有的i的這一項(xiàng)的和,然后我們?cè)貽(n)乘上階乘和2的次冪就可以了.
(一開(kāi)始代碼打錯(cuò)了,還以為那個(gè)公式在S(i,j)不存在的時(shí)候是錯(cuò)的……后來(lái)手玩了一下才發(fā)現(xiàn)他是對(duì)的……)
補(bǔ)充:
又用多項(xiàng)式求逆打了一遍,比上面那個(gè)做法慢了一倍……
這道題求逆的具體做法參見(jiàn)http://blog.csdn.net/lych_cys/article/details/51512278
感覺(jué)好神奇啊,把多項(xiàng)式當(dāng)成數(shù)來(lái)推式子……
這個(gè)東西感覺(jué)有點(diǎn)像CDQ+ntt……

#include <cstdio> #include <cstring> #include <algorithm> const int N=400010; const int P=998244353; typedef long long LL; inline int Pow(int x,int y){int ret=1;while(y){if(y&1)ret=(LL)ret*x%P;x=(LL)x*x%P,y>>=1;}return ret; } int A[N],B[N],rev[N],len; int ai[N],bi[N],ci[N]; int jie[N],ni[N],inv[N],n; inline void ntt(int *C,int opt){register int i,j,k,w;int wn,temp;for(i=1;i<len;++i)if(i<rev[i])std::swap(C[i],C[rev[i]]);for(k=2;k<=len;k<<=1){wn=Pow(3,(P-1)/k);if(opt==-1)wn=Pow(wn,P-2);for(i=0;i<len;i+=k){w=1;for(j=0;j<(k>>1);++j,w=(LL)w*wn%P){temp=(LL)w*C[i+j+(k>>1)]%P;C[i+j+(k>>1)]=(C[i+j]-temp+P)%P;C[i+j]=(C[i+j]+temp)%P;}}} } inline void mul(int *a,int *b,int *c,int n){len=1;while(len<n)len<<=1;int i;for(i=1;i<len;++i)rev[i]=(rev[i>>1]>>1)|((i&1)?(len>>1):0);for(i=0;i<len;++i)A[i]=a[i],B[i]=b[i];ntt(A,1),ntt(B,1);for(i=0;i<len;++i)A[i]=(LL)A[i]*B[i]%P;ntt(A,-1);int Inv=Pow(len,P-2);for(i=0;i<len;++i)c[i]=(LL)A[i]*Inv%P; } int main(){scanf("%d",&n);int i,ans=1,temp=1;jie[0]=ni[0]=1,inv[1]=1;for(i=2;i<=n;++i)inv[i]=((-(LL)(P/i)*inv[P%i])%P+P)%P;for(i=1;i<=n;++i)jie[i]=(LL)jie[i-1]*i%P,ni[i]=(LL)ni[i-1]*inv[i]%P;bi[0]=0,bi[1]=n,ai[0]=1,ai[1]=P-1;for(i=2;i<=n;++i)bi[i]=(LL)i*(Pow(i,n)-1+P)%P*ni[i]%P*inv[i-1]%P,ai[i]=(i&1)?(P-ni[i]):ni[i];mul(ai,bi,ci,n+n+2);for(i=1;i<=n;++i)temp=(((LL)temp)<<1LL)%P,ans=(ans+(LL)ci[i]*temp%P*jie[i])%P;printf("%d\n",ans);return 0; } 直接ntt #include <cstdio> #include <cstring> #include <algorithm> typedef long long LL; const int N=100010; const int P=998244353; inline int Pow(int x,int y){int ret=1;while(y){if(y&1)ret=(LL)ret*x%P;x=(LL)x*x%P,y>>=1;}return ret; } int len,n,A[N<<2],rev[N<<2]; int g[N<<2],f[N<<2],jie[N],ni[N]; inline void ntt(int *C,int opt){register int i,j,k,w;int wn,temp;for(i=1;i<len;++i)if(rev[i]>i)std::swap(C[i],C[rev[i]]);for(k=2;k<=len;k<<=1){wn=Pow(3,(P-1)/k);if(opt==-1)wn=Pow(wn,P-2);for(i=0;i<len;i+=k){w=1;for(j=0;j<(k>>1);++j,w=(LL)w*wn%P){temp=(LL)w*C[i+j+(k>>1)]%P;C[i+j+(k>>1)]=(C[i+j]-temp+P)%P;C[i+j]=(C[i+j]+temp)%P;}}} } inline void Inv(int *a,int *b,int cd){if(cd==1){b[0]=Pow(a[0],P-2);return;}Inv(a,b,cd>>1);int i,inv;len=cd<<1;for(i=1;i<len;++i)rev[i]=(rev[i>>1]>>1)|((i&1)?(len>>1):0);memcpy(A,a,cd<<2),memset(A+cd,0,cd<<2);ntt(A,1),ntt(b,1);for(i=0;i<len;++i)b[i]=(2-(LL)A[i]*b[i]%P+P)*b[i]%P;ntt(b,-1),inv=Pow(len,P-2);for(i=0;i<cd;++i)b[i]=(LL)b[i]*inv%P;memset(b+cd,0,cd<<2); } int main(){scanf("%d",&n);int i,cd,ans=0;jie[0]=ni[0]=1;for(i=1;i<=n;++i)jie[i]=(LL)jie[i-1]*i%P;ni[n]=Pow(jie[n],P-2);for(i=n-1;i>0;--i)ni[i]=(LL)ni[i+1]*(i+1)%P;g[0]=1;for(i=1;i<=n;++i)g[i]=(-2*ni[i]+P+P)%P;cd=1;while(cd<=n)cd<<=1;Inv(g,f,cd);for(i=0;i<=n;++i)ans=(ans+(LL)f[i]*jie[i])%P;printf("%d\n",ans);return 0; } 多項(xiàng)式求逆

?

轉(zhuǎn)載于:https://www.cnblogs.com/TSHugh/p/8480847.html

總結(jié)

以上是生活随笔為你收集整理的【BZOJ 4555】[Tjoi2016Heoi2016]求和 多项式求逆/NTT+第二类斯特林数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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

主站蜘蛛池模板: 黄瓜视频在线免费看 | 久久艹精品视频 | 日韩免费网站 | 日本老太婆做爰视频 | 亚洲高清色 | 色涩综合| 美脚の诱脚舐め脚视频播放 | 久久男人网 | 精品国产午夜福利在线观看 | 91网站大全| 三点尽露的大尺度国产 | 国产午夜精品久久久久久久久久 | www天天操 | 国产精品扒开腿做爽爽爽a片唱戏 | 蜜臀久久精品久久久用户群体 | 青娱网电信一区电信二区电信三区 | 国产系列精品av | 亚洲第一天堂 | 激情婷婷六月天 | 五月亚洲综合 | 欧美12--15处交性娇小 | 免费一级毛片麻豆精品 | 91综合视频| 欧美成人精品一区二区综合免费 | 中国国语农村大片 | 欧美影院一区 | 亚洲乱码国产乱码精品天美传媒 | 欧美日韩不卡合集视频 | 亚洲欧美激情小说另类 | 女人18片毛片60分钟 | 一区二区三区四区免费观看 | 精国产品一区二区三区a片 国产精品第一 | 成人精品一区二区三区四区 | 国产女人18毛片水真多18 | 国产毛片a级 | 朝桐光av一区二区三区 | 中文在线观看免费网站 | 亚洲一区二区不卡在线观看 | 丰满肉肉bbwwbbww | 两性午夜视频 | 成人免费久久 | 波多野结衣一区二区三区高清av | 中国一级大黄大黄大色毛片 | 每日av在线 | 丰满人妻一区二区三区免费视频 | 日本免费电影一区二区三区 | 婷婷色在线视频 | 艳母在线视频 | 少妇激情网 | 男人天堂av网 | 打屁股无遮挡网站 | 最新中文字幕在线视频 | 向日葵视频在线 | 一级特黄特色的免费大片视频 | 国产一二在线观看 | 色天天干| 国产香蕉9| 激情综合一区二区三区 | 伊人久久超碰 | 精品少妇一区二区三区免费观看 | 色偷偷资源网 | 在线黄色av网站 | 国产乱码一区二区 | 超级碰在线观看 | 日韩电影在线观看一区 | 国产精品theporn | 校园春色综合 | 色呦呦视频 | 99视频+国产日韩欧美 | 国产精品69久久久久孕妇欧美 | 污污网站免费 | 羞羞的网站在线观看 | 欧美sese | 国产精品免费久久久久 | 毛片a级片 | 亚洲精品社区 | 97精品一区 | 国产成年人网站 | 精品国产自在精品国产精小说 | 日本美女毛片 | 亚洲欧美日本在线 | 韩国jizz| 亚洲av区无码字幕中文色 | 韩国中文字幕hd久久精品 | 中国一区二区三区 | 精品日韩一区二区三区 | 欧美视频一区在线 | 黄色小视频在线免费看 | 午夜视频色 | 男人靠女人免费视频网站 | 欧美一级片免费在线观看 | 亚洲国产一级 | 性猛交xxxx| 天天色天天射综合网 | 成人欧美一区二区三区在线观看 | 天天看片中文字幕 | 成人hd | 污的视频在线观看 | 美女被啪羞羞粉色视频 |