POJ 3280 Cheapest Palindrome
来源:互联网 发布:大屏播放软件 编辑:程序博客网 时间:2024/06/05 05:59
题意:有n种字符,组成长为m的串,分别给出字符增加和删除操作的代价,求把原字符串变成回文串的最小代价
解题思路:区间dp.dp[i][j]表示从区间i到j是一个回文串的最小代价,状态转移方程是:如果s[i]=s[j],dp[i][j]=dp[i+1][j-1];否则dp[i][j]=min(dp[i][j],dp[i+1][j]+min(add[s[i]-'a'],del[s[i]-'a']))),dp[i][j]=min(dp[i][j],dp[i][j-1]+min(add[s[j]-'a'],del[s[j]-'a'])).区间dp就是将一个区间划分成很多个小区间进行求解
代码:
#include <iostream>#include <algorithm>#include <cstring>#include <string>#include <cstdio>#include <cmath>using namespace std;#define INF 0x3f3f3f3fconst int maxn=30;const int maxm=2000+5;int n,m;string s;int add[maxn],del[maxn];int dp[maxm][maxm];void solve(){ int ans=0; for(int i=m-1;i>=0;i--) { dp[i][i]=0; for(int j=i+1;j<m;j++) { dp[i][j]=INF; if(s[i]==s[j])dp[i][j]=dp[i+1][j-1]; else { dp[i][j]=min(dp[i][j],dp[i+1][j]+min(add[s[i]-'a'],del[s[i]-'a'])); dp[i][j]=min(dp[i][j],dp[i][j-1]+min(add[s[j]-'a'],del[s[j]-'a'])); } } } printf("%d\n",dp[0][m-1]);}int main(){ while(cin>>n>>m) { cin>>s; char ch; int a,b; for(int i=0;i<n;i++) { cin>>ch>>a>>b; add[ch-'a']=a; del[ch-'a']=b; } solve(); } return 0;}/*3 4abcba 1000 1100b 350 700c 200 800*/
阅读全文
0 0
- Poj 3280 Cheapest Palindrome
- POJ 3280 Cheapest Palindrome
- poj 3280 Cheapest Palindrome
- POJ 3280 Cheapest Palindrome
- POJ 3280 Cheapest Palindrome
- poj 3280 Cheapest Palindrome
- POJ 3280--Cheapest Palindrome
- POJ 3280 Cheapest Palindrome
- poj 3280 Cheapest Palindrome
- POJ 3280 Cheapest Palindrome
- POJ - 3280 Cheapest Palindrome
- poj 3280 Cheapest Palindrome
- ***POJ 3280 Cheapest Palindrome
- poj-3280-Cheapest Palindrome
- poj 3280 Cheapest Palindrome
- POJ 3280 Cheapest Palindrome
- poj 3280 Cheapest Palindrome
- poj 3280Cheapest Palindrome
- .Net Core 中的包、元包与框架(Packages, Metapackages and Frameworks)
- Google高性能RPC框架gRPC 1.0.0发布
- C#7.0中有哪些新特性?
- .Net Aop(静态织入)框架 BSF.Aop
- 替代反射调用的几种方式及性能测试
- POJ 3280 Cheapest Palindrome
- F#年度调查结果概述
- .NET Core 系列5 :使用 Nuget打包类库
- 从Unity3D编译器升级聊起Mono
- 介绍开源的.net通信框架NetworkComms
- 如果你也会C#,那不妨了解下F#(4):了解函数及常用函数
- 升讯威微信营销系统开发教程:(1)订阅号和服务号深入分析
- 升讯威微信营销系统开发实践:(2)功能设计与架构设计
- 升讯威微信营销系统开发实践:(3)中控服务器的设计 .Net 还是 Java?