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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

bzoj1055 [HAOI2008]玩具取名 区间DP

發(fā)布時(shí)間:2024/4/17 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 bzoj1055 [HAOI2008]玩具取名 区间DP 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

問題描述

某人有一套玩具,并想法給玩具命名。首先他選擇WING四個(gè)字母中的任意一個(gè)字母作為玩具的基本名字。然后

他會根據(jù)自己的喜好,將名字中任意一個(gè)字母用“WING”中任意兩個(gè)字母代替,使得自己的名字能夠擴(kuò)充得很長。 現(xiàn)在,他想請你猜猜某一個(gè)很長的名字,最初可能是由哪幾個(gè)字母變形過來的。 區(qū)間DP和記憶化 練習(xí)DP中。。代碼幾乎是照著題解寫的。 題解:http://hzwer.com/5333.html? 對代碼進(jìn)行了一些補(bǔ)充說明 #include<bits/stdc++.h> using namespace std; char s[4]={'W','I','N','G'}; char a[4][20][2],ch[220]; int f[210][210][4]; int q[250],t[5]; bool flag; bool dp(int l,int r,int k){if(l==r){return ch[l]==s[k];}int &res=f[l][r][k];//為l到r的字母可不可以縮寫成k if(res!=-1)return res;for(int i=1;i<=t[k];i++){for(int j=l;j<=r-1;j++){if(dp(l,j,q[a[k][i][0]])&&dp(j+1,r,q[a[k][i][1]]))//按區(qū)間進(jìn)行比較 return res=1;}}return res=0; } int main(){memset(f,-1,sizeof f);q['W']=0;q['I']=1;q['N']=2;q['G']=3;for(int i=0;i<4;i++)scanf("%d",&t[i]);for(int i=0;i<4;i++)for(int j=1;j<=t[i];j++)scanf("%s",a[i][j]);scanf("%s",ch+1);int n=strlen(ch+1);for(int i=0;i<4;i++)if(dp(1,n,i)){flag=1;printf("%c",s[i]);}if(!flag)printf("The name is wrong!"); }

?

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

總結(jié)

以上是生活随笔為你收集整理的bzoj1055 [HAOI2008]玩具取名 区间DP的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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