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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Problem H Rock Paper Scissors,FFT

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

題目

題目鏈接

題意

給出兩段石頭剪刀布的順序SSTT,其中TT要短一些,現在讓你把TTSS的某個位置上靠,使得靠好了以后,TT能贏SS的子段的次數最大。
如圖:

題解

這道題很典型的FFT啦,首先我們把TT序列換成它能贏的序列TT′,也就是TT序列中的RSPR、S、P對應的換成SPRS、P、R形成TT′

這樣的話,我們只需要在SS中找一段匹配程度最大的就可以了,這的最大的匹配程度就是答案。

為了匹配,我們把TT′倒換過來,記為rTrT′,我們想象一下做卷積的過程,
發現新的卷積序列中的第kk個位置的值等于S[k?lenT,k?1]S[k?lenT,k?1]TT′序列對應位置乘積之和。

為了使用卷積解決這個問題,我們把問題拆成3部分,即單獨考慮PSRP、S、R時候,最大匹配程度,最后將相同位置的匹配程度加起來就可以了。

代碼

#include <cmath> #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; double pi = acos(-1.0); struct complex{double re,im;complex(double r = 0.0,double i = 0.0):re(r),im(i){};complex operator+(complex com){return complex(re+com.re,im+com.im);}complex operator-(complex com){return complex(re-com.re,im-com.im);}complex operator*(complex com){return complex(re*com.re-im*com.im,re*com.im+im*com.re);} }; complex wn,wntmp; void rader(complex arr[],int n){int num = n-1;for(int i = 0;i < n;++i){int tn = n>>1;while(num && num >= tn) num ^= tn,tn >>= 1;num |= tn;if(num > i) swap(arr[i],arr[num]);} } void FFT(complex cs[],int n,int f){rader(cs,n);for(int s = 1;s < n;s <<= 1){wn = complex(cos(f*2*pi/(s*2)),sin(f*2*pi/(s*2)));for(int offset = 0;offset < n;offset += s<<1){wntmp = complex(1.0,0.0);for(int i = 0;i < s;++i){complex u = cs[offset+i],v = cs[offset+i+s]*wntmp;cs[offset+i] = u + v;cs[offset+i+s] = u - v;wntmp = wntmp * wn;}}}if(f == -1)for(int i = 0;i < n;++i)cs[i].re /= n; } int n,m; const int maxn = 1e5+7; char S[maxn],T[maxn]; int ans[maxn*4]; complex csA[maxn*4],csB[maxn*4]; #define pr(x) cout<<#x<<":"<<x<<endl void solve(char c){memset(csA,0,sizeof(csA));memset(csB,0,sizeof(csB));for(int i = 0;i < n;++i) csA[i] = complex(S[i]==c?1.0:0);for(int i = 0;i < m;++i) csB[i] = complex(T[i]==c?1.0:0);int len = 1;while(len < n) len<<=1;len <<= 1;FFT(csA,len,1);FFT(csB,len,1);for(int i = 0;i < len;++i) csA[i] = csA[i]*csB[i];FFT(csA,len,-1);for(int i = m-1;i < len;++i) {ans[i] += int(csA[i].re+0.5);};} char big(char c){if(c == 'R') return 'S';if(c == 'S') return 'P';if(c == 'P') return 'R'; } int main(){cin>>n>>m>>S>>T;for(int i = 0;i < m/2;++i) swap(T[i],T[m-1-i]);for(int i = 0;i < m;++i) T[i] = big(T[i]);solve('P');solve('S');solve('R');int mx = 0;for(int i = 0;i < n+m+1;++i) mx = max(mx,ans[i]);cout<<mx<<endl;return 0; } 創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的Problem H Rock Paper Scissors,FFT的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 国产视频入口 | 久久久久99精品 | 神马久久久久久久久 | 日本三级吹潮 | 丰满少妇被猛烈进入高清播放 | 99小视频 | 亚洲视频手机在线 | 国产成人精品女人久久久 | 正在播放一区二区 | 国产精品一区在线播放 | 国产女教师一区二区三区 | 黄色观看网站 | 夜间福利视频 | 欧美一级在线播放 | 黄色小视频大全 | 国产熟妇一区二区三区四区 | 国产免费自拍 | 日韩一级视频在线观看 | 中文字幕亚洲乱码熟女一区二区 | 亚洲色图18p | 尤物视频在线播放 | 99久久影院| 中文字幕在线字幕中文 | av色图在线 | 偷拍超碰 | 亚洲天堂岛 | 午夜大片在线观看 | 亚洲网色 | 啪啪一级片 | 波多野结衣家庭主妇 | 538国产精品一区二区免费视频 | 婷婷亚洲一区 | 精品久久久久久久久久久aⅴ | 成人在线免费看视频 | 一区二区三区精品在线观看 | 有码中文 | 色哟哟国产精品 | 欧美网站免费 | 黄色av免费播放 | 色婷婷中文字幕 | 国产精品露脸视频 | 乳罩脱了喂男人吃奶视频 | 日韩精品小视频 | 国产aa视频| 超碰在线中文字幕 | av看片资源 | 午夜视频免费 | 超碰人人插 | 亚洲第一综合网 | 性欢交69国产精品 | 日韩av一区在线观看 | 精品乱子伦 | 欧美日韩亚洲在线观看 | 久久免费影院 | 综合 欧美 亚洲日本 | 国产伦理自拍 | 精品97人妻无码中文永久在线 | 国产男女猛烈无遮挡免费视频 | 玖玖视频网 | av成人毛片 | 污污网站在线 | 黄91在线观看 | 日本免费在线观看 | 久久福利视频网 | 亚洲婷婷网 | 夜久久| 777久久久精品一区二区三区 | 亚洲av成人片色在线观看高潮 | 手机看片久久久 | 日批毛片| 日韩女优在线 | 中文字幕在线色 | 国产免费视频一区二区三区 | 91视频免费看片 | 久久久亚洲av波多野结衣 | 精品国产午夜福利 | 欧美韩国日本在线 | 国产免费一区视频观看免费 | 欧日韩不卡视频 | 国产稀缺精品盗摄盗拍 | avtt在线播放 | 国产午夜精品一区二区三区视频 | 成人午夜视频免费观看 | 上海贵妇尝试黑人洋吊 | 99精品热视频| 秋葵视频在线 | 欧美a网站 | 久久久18禁一区二区三区精品 | 毛片网站在线播放 | 能在线观看的av | 亚洲国产成人一区二区 | fc2ppv色の美マンに中出し | 亚洲精品水蜜桃 | xxx性视频 | 国产精品久久久久久久久借妻 | 国产一区二区三区久久久 | 国产成人在线看 | 欧美日本日韩 | 中文字幕97 |