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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

洛谷 - P3321 [SDOI2015]序列统计(原根+NTT)

發(fā)布時間:2024/4/11 编程问答 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 洛谷 - P3321 [SDOI2015]序列统计(原根+NTT) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

題目鏈接:點(diǎn)擊查看

題目大意:給出一個集合 SSS,集合中的數(shù)是 [0,m)[0,m)[0,m) 且互不相同的,問從集合中選 nnn 次數(shù)字,且乘積對 mmm 取模后等于 xxx 的方案數(shù)有多少

題目分析:

考慮轉(zhuǎn)移方程,我們設(shè) f[i][j]f[i][j]f[i][j] 為選了 iii 個數(shù)后,乘積對 mmm 取余后為 jjj 的方案數(shù),那么自然有 f[i+1][j]=∑ab≡j(modm)f[i][a]?f[i][b]f[i+1][j]=\sum\limits_{ab\equiv j \pmod m}f[i][a]*f[i][b]f[i+1][j]=abj(modm)?f[i][a]?f[i][b]

需要注意到本題的 mmm 是一個特別小的質(zhì)數(shù),不難想到原根,設(shè) gggmmm 的原根,可以得到一個性質(zhì)就是 g1,g2,...,gm?1g^1,g^2,...,g^{m-1}g1,g2,...,gm?1 各不相同,且值域?qū)儆?[1,m)[1,m)[1,m)

所以將每個數(shù)換成其原根對應(yīng)的數(shù)字后就可以化乘為加了,設(shè) gA≡a(modm)g^A \equiv a \pmod mgAa(modm) 更具體的,原轉(zhuǎn)移方程就可以書寫為: f[i+1][j]=∑gAgB≡gJ(modm)f[i][A]?f[i][B]f[i+1][j]=\sum\limits_{g^Ag^B\equiv g^J \pmod m}f[i][A]*f[i][B]f[i+1][j]=gAgBgJ(modm)?f[i][A]?f[i][B] 因?yàn)?mmm 是質(zhì)數(shù),所以根據(jù)費(fèi)馬小定理降冪得到:f[i+1][j]=∑gA+B(modm?1)≡gJ(modm)f[i][A]?f[i][B]f[i+1][j]=\sum\limits_{g^{A+B\pmod {m-1}}\equiv g^J \pmod m}f[i][A]*f[i][B]f[i+1][j]=gA+B(modm?1)gJ(modm)?f[i][A]?f[i][B]

f[i+1][j]=∑A+B≡J(modm?1)f[i][A]?f[i][B]f[i+1][j]=\sum\limits_{A+B\equiv J \pmod {m-1}}f[i][A]*f[i][B]f[i+1][j]=A+BJ(modm?1)?f[i][A]?f[i][B]

又因?yàn)槊繉拥木矸e的轉(zhuǎn)移方程是相同的,可以用快速冪優(yōu)化NTT,時間復(fù)雜度為 O(m?logm?logn)O(m*logm*logn)O(m?logm?logn)

有幾個小細(xì)節(jié)需要注意:

  • 因?yàn)槟?shù)從 mmm 變成了 m?1m-1m?1,原本 gm?1≡1(modm)g^{m-1}\equiv 1 \pmod mgm?11(modm),這里的指數(shù)需要對 m?1m-1m?1 取模,換算到本題中應(yīng)該變成 gm?1=g0=1g^{m-1}=g^{0}=1gm?1=g0=1,所以當(dāng)原數(shù)為 111 時,對應(yīng)的原根的指數(shù)應(yīng)該為 000,幾乎沒有題解說明這個細(xì)節(jié),自己想了好久才明白的
  • SSS 集合中的 000 是沒有貢獻(xiàn)的,直接忽略即可
  • 每次卷完之后,因?yàn)橄聵?biāo)的取值是 [0,2?(m?1))[0,2*(m-1))[0,2?(m?1)) 的,所以需要將 [m?1,2?(m?1))[m-1,2*(m-1))[m?1,2?(m?1)) 這一部分的答案加到 [0,m?1)[0,m-1)[0,m?1) 上去
  • 代碼:

    // Problem: P3321 [SDOI2015]序列統(tǒng)計 // Contest: Luogu // URL: https://www.luogu.com.cn/problem/P3321 // Memory Limit: 125 MB // Time Limit: 1000 ms // // Powered by CP Editor (https://cpeditor.org)// #pragma GCC optimize(2) // #pragma GCC optimize("Ofast","inline","-ffast-math") // #pragma GCC target("avx,sse2,sse3,sse4,mmx") #include<iostream> #include<cstdio> #include<string> #include<ctime> #include<cmath> #include<cstring> #include<algorithm> #include<stack> #include<climits> #include<queue> #include<map> #include<set> #include<sstream> #include<cassert> #include<bitset> #include<list> #include<unordered_map> #define lowbit(x) (x&-x) using namespace std; typedef long long LL; typedef unsigned long long ull; template<typename T> inline void read(T &x) {T f=1;x=0;char ch=getchar();while(0==isdigit(ch)){if(ch=='-')f=-1;ch=getchar();}while(0!=isdigit(ch)) x=(x<<1)+(x<<3)+ch-'0',ch=getchar();x*=f; } template<typename T> inline void write(T x) {if(x<0){x=~(x-1);putchar('-');}if(x>9)write(x/10);putchar(x%10+'0'); } const int inf=0x3f3f3f3f; const int N=1e6+100; const int mod=1004535809,G=3,Gi=(mod+1)/3; bool vis[8010]; int n,m,limit = 1,L,r[N],p[8010]; LL a[N],ans[N]; inline LL fastpow(LL a, LL k) {LL base = 1;while(k) {if(k & 1) base = (base * a ) % mod;a = (a * a) % mod;k >>= 1;}return base % mod; } inline void NTT(LL *A, int type) {for(int i = 0; i < limit; i++) if(i < r[i]) swap(A[i], A[r[i]]);for(int mid = 1; mid < limit; mid <<= 1) { LL Wn = fastpow( type == 1 ? G : Gi , (mod - 1) / (mid << 1));for(int j = 0; j < limit; j += (mid << 1)) {LL w = 1;for(int k = 0; k < mid; k++, w = (w * Wn) % mod) {int x = A[j + k], y = w * A[j + k + mid] % mod;A[j + k] = (x + y) % mod,A[j + k + mid] = (x - y + mod) % mod;}}}if(type==-1) {LL inv=fastpow(limit,mod-2);for(int i=0;i<limit;i++) {A[i]=(A[i]*inv)%mod;}} } void q_pow(int n) {ans[0]=1;while(n) {NTT(a,1);if(n&1) {NTT(ans,1);for(int i=0;i<limit;i++) {ans[i]=ans[i]*a[i]%mod;}NTT(ans,-1);for(int i=limit-1;i>=m-1;i--) {ans[i-m+1]=(ans[i-m+1]+ans[i])%mod;ans[i]=0;}}for(int i=0;i<limit;i++) {a[i]=a[i]*a[i]%mod;}NTT(a,-1);for(int i=limit-1;i>=m-1;i--) {a[i-m+1]=(a[i-m+1]+a[i])%mod;a[i]=0;}n>>=1;} } int find_root(int mod) {for(int i=2;i<mod;i++){memset(vis,false,sizeof(vis));bool flag=true;int x=i;for(int j=1;j<=mod-1;j++){if(vis[x]){flag=false;break;}vis[x]=true;x=x*i%mod;}if(flag)return i;}return -1; } int main() { #ifndef ONLINE_JUDGE // freopen("data.in.txt","r",stdin); // freopen("data.out.txt","w",stdout); #endif // ios::sync_with_stdio(false);int x,S;read(n),read(m),read(x),read(S);while(limit<=m+m) limit<<=1,L++;for(int i=0;i<limit;i++) r[i]=(r[i>>1]>>1)|((i&1)<<(L-1));int rt=find_root(m);int sum=1;for(int i=1;i<m-1;i++) {sum=sum*rt%m;p[sum]=i;}for(int i=0,x;i<S;i++) {read(x);if(x) {a[p[x]]=1;}}q_pow(n);cout<<ans[p[x]]<<endl;return 0; } 超強(qiáng)干貨來襲 云風(fēng)專訪:近40年碼齡,通宵達(dá)旦的技術(shù)人生

    總結(jié)

    以上是生活随笔為你收集整理的洛谷 - P3321 [SDOI2015]序列统计(原根+NTT)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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

    主站蜘蛛池模板: 色香蕉网| 国产午夜精品一区二区 | 久久中文字幕视频 | 中文字幕日韩在线观看 | 成片免费观看 | 国产呻吟av| 欧美一区二三区 | 欧美一级少妇 | 国产原创91 | 久久男人网 | 免费视频爱爱太爽 | 狠狠躁18三区二区一区视频 | 国产美女一区二区 | 成人h动漫精品一区 | 亚洲春色av| 蜜臀av一区二区三区 | 日韩新片王网 | 饥渴少妇伦色诱公 | 91正在播放| 叶山小百合av一区二区 | 性久久久久久久久久久久 | 九色丨蝌蚪丨成人 | 大学生av | 亚洲精品视频一区二区三区 | 成人精品免费在线观看 | 日本xxxx人| 高跟91白丝 | 国产性生活网站 | 日本精品入口免费视频 | 亚洲一区二区三区高清视频 | 西西4444www大胆无视频 | 天堂网在线视频 | 色就是色欧美色图 | 国产精品一区二区黑人巨大 | 狠狠cao日日穞夜夜穞av | 日本国产一区 | 国产精品图片 | 伊人影视在线 | 91干网 | 超碰人人艹 | 国产一级不卡毛片 | 午夜免费福利 | 国产激情免费视频 | 高清不卡一区 | 天天色天天射天天操 | 欧洲一区二区在线 | 欧美日韩一区二区视频在线观看 | 国产吞精囗交久久久 | 香蕉视频一区二区三区 | 日韩一区在线观看视频 | 午夜亚洲天堂 | 欧美日韩一区二区三区在线 | 三年大全国语中文版免费播放 | 伊人春色网 | 欧美xxxx少妇 | 亚洲欧美一区二区三区四区五区 | 欧美午夜一区二区三区 | 农村少妇 | 精品一区二区三区入口 | 蜜桃av噜噜一区二区三区网址 | 污导航在线观看 | 久久h| 国产极品美女高潮无套在线观看 | 日日摸日日添日日碰9学生露脸 | 国产免费又爽又色又粗视频 | 香蕉尹人网 | 爱爱色图 | 探花视频在线免费观看 | 国产日本亚洲 | 4438国产精品一区二区 | 亚洲最大黄网 | 成人精品在线看 | 国产乱真实合集 | 在线看黄色的网站 | 夜夜爱av| 久久久999 | 国产三级在线观看视频 | 美女久久 | 91美女在线 | 日韩午夜激情 | 日本精品一区二区三区在线观看 | 午夜不卡在线观看 | 天躁夜夜躁狼狠躁 | 东京av男人的天堂 | 国产亚洲欧美一区 | 东京热无码av一区二区 | 99视频在线免费 | 欧美精品免费看 | 中文字幕精品三级久久久 | 肉肉视频在线观看 | 人妻在线日韩免费视频 | 视频在线不卡 | 欧美久久久久久久久久久 | www.中文字幕在线观看 | 日韩视频在线免费观看 | 亚洲一区二区三区av无码 | 免费在线观看网址入口 | 国内精品在线播放 | 欧美精品第二页 |