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 ;
}

最新文章

  1. 如何查询centos查看系统内核版本,系统版本,32位还是64位
  2. Hadoop完全分布式集群配置
  3. Sales Order Flow Statuses
  4. dreamweaver中用正则表达式查找替换批量删除 tppabs标签的方法
  5. spring读取prperties配置文件(1)
  6. 17.1.1.1 Setting the Replication Master Configuration 设置复制的master 配置:
  7. [置顶] Linux下的截图小工具
  8. HNCU1324:算法2-2:有序线性表的有序合并(线性表)
  9. CEPH RGW集群和bucket的zone group 不一致导致的404异常解决 及 使用radosgw-admin metadata 命令设置bucket metadata 的方法
  10. mysqldump 备份脚本
  11. Echarts 中国地图(包括china.js文件)
  12. &amp;#65279导致网页顶部空白一行的解决办法【实测有效】
  13. 自学Python第一天
  14. Vmware 虚拟机无法启动
  15. Spring MVC Controller异常处理总结
  16. 背水一战 Windows 10 (72) - 控件(控件基类): UIElement - UIElement 的位置, UIElement 的布局, UIElement 的其他特性
  17. [W3bSafe]Metasploit溢出渗透内网主机辅助脚本
  18. AndroidStudio制作欢迎界面与应用图标
  19. 四种加载React数据的技术对比(Meteor 转)
  20. C++11 Function 使用场景

热门文章

  1. 对 React Context 的理解以及应用
  2. vue -- 使用sass并引入公共sass文件
  3. HBase HA + Hadoop HA 搭建
  4. 浅谈UML——九种图(二)
  5. Windows平台Anaconda使用笔记
  6. java 正则简单使用
  7. 如何理解javascript中的同步和异步
  8. 存储过程 jdbc
  9. aop 切面配置
  10. 使用AlarmManager定期执行工作