codeforces LionAge II DP
来源:互联网 发布:淘宝店铺显示的销量 编辑:程序博客网 时间:2024/06/11 08:36
题意:a,b两个紧挨的字符在字符串中会得到一定的分数,现在在一个字符串中要求可以改变k个字符,求最终可以得到的最高分。
做法:dp[i][j][k]表示修改了i次,字串1-j的末尾字符是k,然后不难想出状态转移。动态规划的好处就是压缩记录了前面的状态,然后又有一个递推关系,以此来省时间。
#include <iostream>#include <cstdio>#include <algorithm>#include <cstring>#define eps -1e8using namespace std;int gra[30][30];int dp[102][102][30];int main(){ int k,m,len,ans=eps; char str[102]; str[0]='a'; scanf("%s%d",&str[1],&k); scanf("%d",&m); getchar(); for(int i=0;i<102;i++) for(int j=0;j<102;j++) for(int k=0;k<30;k++) dp[i][j][k]=eps; while(m--) { char u,v; u=getchar();getchar(); v=getchar(); u=u-'a'+1;v=v-'a'+1; scanf("%d",&gra[u][v]);getchar(); } for(int x=1;x<=26;x++) if(x==str[1]-'a'+1)dp[0][1][x]=0; else dp[1][1][x]=0; for(int i=2;str[i];i++) for(int kk=0;kk<=k;kk++) for(int x=1;x<=26;x++) { if(x!=str[i]-'a'+1&&kk>0) for(int y=1;y<=26;y++) if(dp[kk-1][i-1][y]!=eps) dp[kk][i][x]=max(dp[kk][i][x],dp[kk-1][i-1][y]+gra[y][x]); if(x==str[i]-'a'+1) for(int y=1;y<=26;y++) if(dp[kk][i-1][y]!=eps) dp[kk][i][x]=max(dp[kk][i][x],dp[kk][i-1][y]+gra[y][x]); } len=strlen(str); for(int i=0;i<=k;i++) for(int j=1;j<=26;j++) ans=max(dp[i][len-1][j],ans); printf("%d\n",ans); return 0;}
- codeforces LionAge II DP
- CodeForces 73C LionAge II Dp
- CodeForces 73C LionAge II
- codefores 73C LionAge II (dp)
- 【DP】CodeForces
- 【dp】CodeForces
- codeforces Number Transformation II
- Number Transformation II CodeForces
- 【DP】Unique Paths II
- 【DP】Palindrome Partitioning II
- Unique Paths II (DP)
- Unique Paths II DP
- DP Unique Paths II
- DP Palindrome Partitioning II
- DP------Unique Paths II
- 【dp】codeforces 83E
- 【dp】 Codeforces 2B
- codeforces 154 A DP
- 用Perl访问ftp服务器
- springMVC基于注解配置教程一
- 上班族的真实写照
- STUN, TURN, ICE简要介绍
- 如何保护HTML5应用代码
- codeforces LionAge II DP
- Quotes of the Day – Personal ReminderList
- Java里将Image转换成BufferedImage
- 正则表达式替换---lamda表达式(UniCode编码)
- system.Data.SqlClient.SqlError:因为数据库正在使用,所以无法获得对数据库的独占访问权
- oracle中left join和right join的区别
- Test Design Studio vs QuickTest® Professional
- silverlight+wcf配置
- Android 使用ndk-stack追踪程序崩溃