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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

链式反应

發布時間:2023/12/3 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 链式反应 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

鏈式反應

題目描述

不想看題面,其實就是給定p(x)p(x)p(x),有f′(x)=f(x)2p(x)+1f'(x)=f(x)^2p(x)+1f(x)=f(x)2p(x)+1,求fff這個多項式的冪級數形式前nnn項。

Solution

式子可以寫成fn=∑i,j[0<=i+j<n]fifjpn?i?j?1f_n=\sum_{i,j}[0<=i+j<n]f_if_jp_{n-i-j-1}fn?=i,j?[0<=i+j<n]fi?fj?pn?i?j?1?

顯然能分治FFTFFTFFT
設分治區間為[l,r][l,r][l,r],考慮[l,mid][l,mid][l,mid][mid+1,r][mid+1,r][mid+1,r]的貢獻。
l=1l=1l=1時,貢獻為
∑i=0mid∑j=0mid∑k=0rfifjpk\sum^{mid}_{i=0}\sum^{mid}_{j=0}\sum^{r}_{k=0}f_if_jp_k i=0mid?j=0mid?k=0r?fi?fj?pk?
l>1l>1l>1時,有2l>r2l>r2l>r,因此貢獻為
2∑i=lmid∑j=0r?l∑k=0r?lfifjpk2\sum^{mid}_{i=l}\sum^{r-l}_{j=0}\sum^{r-l}_{k=0}f_if_jp_k 2i=lmid?j=0r?l?k=0r?l?fi?fj?pk?
時間復雜度兩只lglglg
注意這里的f,pf,pf,p始終是一個EGFEGFEGF

#include <vector> #include <list> #include <map> #include <set> #include <deque> #include <queue> #include <stack> #include <bitset> #include <algorithm> #include <functional> #include <numeric> #include <utility> #include <sstream> #include <iostream> #include <iomanip> #include <cstdio> #include <cmath> #include <cstdlib> #include <cctype> #include <string> #include <cstring> #include <ctime> #include <cassert> #include <string.h> //#include <unordered_set> //#include <unordered_map> //#include <bits/stdc++.h>#define MP(A,B) make_pair(A,B) #define PB(A) push_back(A) #define SIZE(A) ((int)A.size()) #define LEN(A) ((int)A.length()) #define FOR(i,a,b) for(int i=(a);i<(b);++i) #define fi first #define se secondusing namespace std;template<typename T>inline bool upmin(T &x,T y) { return y<x?x=y,1:0; } template<typename T>inline bool upmax(T &x,T y) { return x<y?x=y,1:0; }typedef long long ll; typedef unsigned long long ull; typedef long double lod; typedef pair<int,int> PR; typedef vector<int> VI;const lod eps=1e-11; const lod pi=acos(-1); const int oo=1<<30; const ll loo=1ll<<62; const int mods=998244353; const int g=3; const int gi=(mods+1)/3; const int MAXN=2000005; const int INF=0x3f3f3f3f;//1061109567 /*--------------------------------------------------------------------*/ inline int read() {int f=1,x=0; char c=getchar();while (c<'0'||c>'9') { if (c=='-') f=-1; c=getchar(); }while (c>='0'&&c<='9') { x=(x<<3)+(x<<1)+(c^48); c=getchar(); }return x*f; } int Limit,L; char st[MAXN]; int F[MAXN],G[MAXN],P[MAXN],H[MAXN],Q[MAXN],rev[MAXN],inv[MAXN],fac[MAXN],n; inline int upd(int x,int y) { return (x+y>=mods)?x+y-mods:x+y; } inline int quick_pow(int x,int y) {int ret=1;for (;y;y>>=1){if (y&1) ret=1ll*ret*x%mods;x=1ll*x*x%mods;}return ret; } inline void Init(int n) {fac[0]=1;for (int i=1;i<=n;i++) fac[i]=1ll*fac[i-1]*i%mods;inv[n]=quick_pow(fac[n],mods-2);for (int i=n-1;i>=0;i--) inv[i]=1ll*inv[i+1]*(i+1)%mods; } void Number_Theoretic_Transform(int *A,int opt) {for (int i=0;i<Limit;i++) if (i<rev[i]) swap(A[i],A[rev[i]]);for (int i=1;i<Limit;i<<=1){int Wn=quick_pow(opt==1?g:gi,(mods-1)/(i<<1));for (int j=0;j<Limit;j+=(i<<1))for (int k=j,w=1;k<j+i;k++,w=1ll*w*Wn%mods){int x=A[k],y=1ll*A[k+i]*w%mods;A[k]=upd(x,y),A[k+i]=upd(x,mods-y);}}if (opt==-1){int invlim=quick_pow(Limit,mods-2);for (int i=0;i<Limit;i++) A[i]=1ll*A[i]*invlim%mods;} } void solve(int l,int r) {if (l==r) { if (l==1) F[l]=(mods+1)>>1;else F[l]=1ll*F[l]*inv[l]%mods*fac[l-1]%mods;printf("%d\n",2ll*F[l]*fac[l]%mods);return; }int mid=(l+r)>>1;solve(l,mid);if (l==1){Limit=1,L=0;int len=mid*2+r;while (Limit<=len) Limit<<=1,L++;for (int i=0;i<Limit;i++) rev[i]=(rev[i>>1]>>1)|((i&1)<<(L-1));for (int i=0;i<Limit;i++) H[i]=G[i]=0;for (int i=0;i<=r;i++) H[i]=P[i];for (int i=0;i<=mid;i++) G[i]=F[i];Number_Theoretic_Transform(G,1);Number_Theoretic_Transform(H,1);for (int i=0;i<Limit;i++) G[i]=1ll*G[i]*G[i]%mods*H[i]%mods;Number_Theoretic_Transform(G,-1);for (int i=mid+1;i<=r;i++) F[i]=upd(F[i],G[i]);}else{Limit=1,L=0;int len=(mid-l)+(r-l)*2;while (Limit<=len) Limit<<=1,L++;for (int i=0;i<Limit;i++) rev[i]=(rev[i>>1]>>1)|((i&1)<<(L-1));for (int i=0;i<Limit;i++) H[i]=G[i]=Q[i]=0;for (int i=0;i<=r-l;i++) H[i]=P[i];for (int i=0;i<=mid-l;i++) G[i]=F[i+l];for (int i=0;i<=r-l;i++) Q[i]=F[i];Number_Theoretic_Transform(G,1);Number_Theoretic_Transform(Q,1);Number_Theoretic_Transform(H,1);for (int i=0;i<Limit;i++) G[i]=1ll*G[i]*Q[i]%mods*H[i]%mods;Number_Theoretic_Transform(G,-1);for (int i=mid+1;i<=r;i++) F[i]=upd(F[i],upd(G[i-l],G[i-l]));}solve(mid+1,r); } int main() {n=read();Init(n);scanf("%s",st);for (int i=1;i<=n;i++) P[i]=(st[i-1]-'0')*inv[i-1];solve(1,n);return 0; } 創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的链式反应的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 国产精品男同 | 激情视频在线免费观看 | 色一情一区二区三区 | 91日韩一区二区 | 亚洲jlzzjizz少妇| av av片在线看| 婷婷在线播放 | 麻豆国产91在线播放 | 欧美大片aaa | 久在线观看 | 国产成人精品一区二区色戒 | 亚洲一区二区视频 | 国产女女做受ⅹxx高潮 | 免费黄色一级大片 | 精品国产乱码久久久久久久软件 | 国产东北真实交换多p免视频 | av日韩不卡| 久久久久国产视频 | 97色爱 | 天天操天天干天天 | 91看片在线| 中文字幕在线观看线人 | 天天色影综合网 | 欧美极品少妇xxxxⅹ免费视频 | 扒开jk护士狂揉免费 | 亚洲乱色 | 亚洲无人区码一码二码三码的含义 | 姐姐你真棒插曲快来救救我电影 | 国产成人在线观看免费 | 亚洲第一成人av | 一级a毛片免费观看久久精品 | 一区二区激情 | 久久入口| 欧美日韩一区二区三区在线观看 | 亚洲欧美日韩综合一区二区 | 懂色aⅴ国产一区二区三区 亚洲欧美国产另类 | 吊视频一区二区三区 | 中文字幕一区二区三区四区免费看 | 久久久久国产精品夜夜夜夜夜 | 久久久18禁一区二区三区精品 | jzzijzzij亚洲成熟少妇18 欧美www在线观看 | 夜色成人| 亚洲国产专区 | 五月激情站| 天天曰| 日韩精品久久久久久免费 | 天天射综合网站 | 99热亚洲| 国产黄色精品 | 欧美日韩精品在线播放 | 欧美美女性生活 | 中文字幕日韩一区二区三区不卡 | 牛av| 五月婷婷六月天 | 国产高清一区 | 日本a v在线播放 | 免费看a视频| 日本亚洲色大成网站www久久 | 哪个网站可以看毛片 | 久草视频资源 | 日韩av日韩 | 日本色www| 亚洲a精品 | 四虎国产| 黄色小说在线看 | 日批视频免费观看 | 美女狠狠干 | 亚洲国产大片 | 91.久久| 肉丝超薄少妇一区二区三区 | 漂亮人妻洗澡被公强 日日躁 | av高清 | xxx老太太 | 欧美性高潮 | 中出精品| 亚洲福利| 欧美自偷自拍 | 手机看片在线观看 | 激情小视频 | 亚洲av无码潮喷在线观看 | 国产精品久久久久不卡 | 欧美熟女一区二区 | 992在线观看 | aaa一区二区三区 | 欧美破处大片 | 亚洲男女 | 免费在线黄色网 | 肉肉av福利一精品导航 | 国产女人18毛片水18精品 | 日本在线观看免费 | 免费av网站大全 | 国产av一区二区不卡 | 成人免费黄色大片v266 | 国产精品久久久久影院 | 天天摸天天干天天操 | 免费av地址| 国产一级片麻豆 | 亚洲 欧美 自拍偷拍 | 久久亚洲AV无码专区成人国产 |