POJ 3280 Cheapest Palindrome(区间dp)
2024-09-29 14:18:12
dp[i][j]表示处理完i到j的花费,如果s[i] == s[j] 则不需要处理,否则处理s[i]或s[j],
对一个字符ch,加上ch或删掉ch对区间转移来说效果是一样的,两者取min。
#include<cstdio>
#include<iostream>
#include<string>
#include<cstring>
#include<queue>
#include<vector>
#include<stack>
#include<vector>
#include<map>
#include<set>
#include<algorithm>
using namespace std; const int sigma_size = , maxm = 2e3+;
char s[maxm];
int add[sigma_size], del[sigma_size];
int cost[sigma_size];
int dp[maxm][maxm]; //#define LOCAL
int main()
{
#ifdef LOCAL
freopen("in.txt","r",stdin);
#endif
int n, m;
scanf("%d%d",&n,&m);
scanf("%s",s);
for(int i = n; i--;){
char ch[];
scanf("%s",ch);
int id = *ch-'a';
scanf("%d%d",add+id,del+id);
cost[id] = min(add[id],del[id]);
}
for(int L = ; L < m; L++){
for(int i = ; i+L < m; i++){
int j = i+L;
if(s[i] == s[j]){
dp[i][j] = dp[i+][j-]; // 可能会有i+1 = j, j-1 = i,但是最初是0所以没有影响
}else {
dp[i][j] = min(dp[i+][j] + cost[s[i]-'a'], dp[i][j-] + cost[s[j]-'a']) ;
}
}
}
printf("%d\n",dp[][m-]);
return ;
}
最新文章
- 如何查询centos查看系统内核版本,系统版本,32位还是64位
- Hadoop完全分布式集群配置
- Sales Order Flow Statuses
- dreamweaver中用正则表达式查找替换批量删除 tppabs标签的方法
- spring读取prperties配置文件(1)
- 17.1.1.1 Setting the Replication Master Configuration 设置复制的master 配置:
- [置顶] Linux下的截图小工具
- HNCU1324:算法2-2:有序线性表的有序合并(线性表)
- CEPH RGW集群和bucket的zone group 不一致导致的404异常解决 及 使用radosgw-admin metadata 命令设置bucket metadata 的方法
- mysqldump 备份脚本
- Echarts 中国地图(包括china.js文件)
- &;#65279导致网页顶部空白一行的解决办法【实测有效】
- 自学Python第一天
- Vmware 虚拟机无法启动
- Spring MVC Controller异常处理总结
- 背水一战 Windows 10 (72) - 控件(控件基类): UIElement - UIElement 的位置, UIElement 的布局, UIElement 的其他特性
- [W3bSafe]Metasploit溢出渗透内网主机辅助脚本
- AndroidStudio制作欢迎界面与应用图标
- 四种加载React数据的技术对比(Meteor 转)
- C++11 Function 使用场景