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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

hdu5745La Vie en rose

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

鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=5745

題意:給定一個母串s和一個子串p。問s中有多少個位置可以匹配p,可以不完全匹配,p字符串中的每個位置的字符最多可以變動一次(不變的,與前面的字符交換,與后面的字符交換)。

分析:做多校學姿勢。xg的題解解釋得很好,但是對于我這種沒寫過這種優化的人來說還是要看代碼學習一遍,我說下我的理解吧。首先xg列出了dp方程:dp[i][j][0]=dp[i-1][j-1][2]&&s[i]==p[j-1]、dp[i][j][1]=(dp[i-1][j-1][0]||dp[i-1][j-1][1])&&s[i]==p[j]、dp[i][j][2]=(dp[i-1][j-1][0]||dp[i-1][j-1][1])&&s[i]==p[j+1]。我們先遍歷p的1~m個字符然后用bitset來表示有遍歷到當前p[i]時上一層有哪些位置的i是匹配到了前i-1個字符,然后根據當前字符是誰直接去找哪些位置是合法的來更新當前層。這樣的話我們就能一層一層的得到1~n的哪些位置是合法的。重點是預處理出26個字符在哪些位置出現過然后用bitset存下來以便能直接&出當前層哪些位置是合法的,還不懂的話看看代碼吧。O(n*m/w)。PS:XG增強了數據,減小了時間,變成了3.5s。我的程序過不了了。想過的人自己手寫bitset卡卡常數吧。

代碼:

#include<map> #include<set> #include<cmath> #include<queue> #include<bitset> #include<math.h> #include<vector> #include<string> #include<stdio.h> #include<cstring> #include<iostream> #include<algorithm> #pragma comment(linker, "/STACK:102400000,102400000") using namespace std; const int N=100010; const int mod=100000000; const int MOD1=1000000007; const int MOD2=1000000009; const double EPS=0.00000001; typedef long long ll; const ll MOD=1000000007; const int MAX=2000000010; const ll INF=1ll<<55; const double pi=acos(-1.0); typedef double db; typedef unsigned long long ull; char s[N],p[5010]; bitset<N>w[30]; bitset<N>dp[2][3]; int main() {int i,j,n,m,t,now,las;scanf("%d", &t);while (t--) {scanf("%d%d", &n, &m);scanf("%s%s", s+1, p+1);for (i=0;i<26;i++) w[i].reset();for (i=1;i<=n;i++) w[s[i]-'a'][i-1]=1;now=las=1;dp[now][1].set();dp[now][0].reset();dp[now][2].reset();for (i=1;i<=m;i++) {las=now;now^=1;for (j=0;j<3;j++) dp[now][j].reset();int pre=p[i-1]-'a',mid=p[i]-'a',suf=p[i+1]-'a';if (i>1) dp[now][0]=(dp[las][2]&w[pre])<<1;dp[now][1]=((dp[las][0]&w[mid])|(dp[las][1]&w[mid]))<<1;if (i<m) dp[now][2]=((dp[las][0]&w[suf])|(dp[las][1]&w[suf]))<<1;}for (i=m;i<=n;i++)if (dp[now][0][i]||dp[now][1][i]) printf("1");else printf("0");for (i=n+1;i<=n+m-1;i++) printf("0");printf("\n");}return 0; }

總結

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

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

主站蜘蛛池模板: 国产福利精品在线观看 | 日韩成年人视频 | 国产在线视频福利 | 久久精品亚洲一区二区 | 国产精品久久久久久亚洲av | 欧美放荡性医生videos | 国产一区二区日韩 | 蜜臀久久99精品久久久久久宅男 | 欧美一级淫片007 | 亚洲美女色视频 | 青青青青青草 | mm131美女视频 | 99九九热 | 影音先锋中文字幕资源 | 波多野结衣乳巨码无在线观看 | 亚洲精品aⅴ | 青青青国产精品一区二区 | va婷婷在线免费观看 | 9色视频在线观看 | 黄网在线观看视频 | 黄色网战入口 | 久久婷婷综合国产 | 一女双乳被两男吸视频 | 人人爽人人草 | 人人爱爱 | 在线欧美亚洲 | 99re在线视频 | 欧美理伦片在线播放 | 亚洲蜜桃精久久久久久久久久久久 | 黄色成人在线观看 | 国产精品久久久久久久av福利 | 国产一区二区免费电影 | 久久精品国产亚洲av蜜臀色欲 | 2018狠狠干| 秋霞成人午夜伦在线观看 | 亚洲aⅴ| 国产一区二区欧美日韩 | www.日本黄 | 国产黄频在线观看 | 伊人黄色片| 天天干天天操天天拍 | 成人xxx视频 | 性生交大片免费看l | 天天透天天操 | 91精品国产91久久久 | 欧美日韩精品久久久 | 男人的av| 国产一二三 | 不卡一区在线 | 婷婷色亚洲 | 夜夜骑夜夜 | 一区二区三区午夜 | 久久久久久色 | 国产人妻精品一区二区三区不卡 | av污| 男女裸体影院高潮 | 日本在线观看中文字幕 | 中文字幕在线观看视频一区 | 极品少妇xxxx| 中文字幕综合网 | 亚洲香蕉久久 | 99爱视频在线观看 | 亚洲免费三区 | 欧美成人免费在线观看视频 | 亚洲一级特黄毛片 | 在线精品视频免费观看 | 伊人成人在线观看 | 亚洲αv| 狠狠爱综合 | 秋霞在线视频 | 国产欧美日韩精品在线观看 | 99精品在线观看视频 | 少妇毛片一区二区三区粉嫩av | 伊在线久久丫 | 欧美在线va| 成人av自拍 | 神宫寺奈绪一区二区三区 | 香蕉色视频 | 欧美另类在线视频 | 国产96在线 | 又色又爽又黄无遮挡的免费视频 | 久久狠| 欧美在线一级 | 黄色片视频免费看 | 18pao国产成视频永久免费 | 丝袜脚交免费网站xx | 亚洲欧美另类综合 | 91av视频网站 | 欧美日本精品 | 国产精品久久久久久吹潮 | 亚洲一级av毛片 | 久久久99精品国产一区二区三区 | 中文字幕免费一区二区 | 91高跟黑色丝袜呻吟在线观看 | 毛片免费一区二区三区 | 黑人乱码一区二区三区av | 欧美大片免费播放器 | 蜜桃视频一区二区三区在线观看 | 亚洲一区av |