只要发现添加一个字符和删除一个字符是等价的,就是挺裸的区间dp了

因为在当前位置加上一个字符x就相当于在他的对称位置删掉字符x,所以只要考虑删除即可,删除费用是添加和删除取min

设f[i][j]为从i到j的价格,长度从小到大枚举更新就行了 f[i][j]=min(f[i][j-1]+cost[s[j]],f[i+1][j]+cost[s[i]]),如果s[i]==s[j]还能和f[i+1][j-1]取个min

#include<iostream>
#include<cstdio>
using namespace std;
const int N=2005;
int m,n,a[30],f[N][N],x,y;
char s[N],ch[10];
int main()
{
scanf("%d%d",&m,&n);
scanf("%s",s+1);
for(int i=1;i<=m;i++)
{
scanf("%s%d%d",ch,&x,&y);
a[ch[0]-'a']=min(x,y);
}
for(int i=1;i<=n;i++)
s[i]-='a',f[i][i]=0,f[i+1][i]=0;
for(int l=1;l<=n;l++)
for(int i=1;i+l<=n;i++)
{
int j=i+l;
f[i][j]=min(f[i][j-1]+a[s[j]],f[i+1][j]+a[s[i]]);
if(s[i]==s[j])
f[i][j]=min(f[i][j],f[i+1][j-1]);
}
printf("%d\n",f[1][n]);
return 0;
}
/*
3 4
abcb
a 1000 1100
b 350 700
c 200 800
*/

bzoj 1710: [Usaco2007 Open]Cheappal 廉价回文【区间dp】的更多相关文章

  1. BZOJ 1710: [Usaco2007 Open]Cheappal 廉价回文

    Description 为了跟踪所有的牛,农夫JOHN在农场上装了一套自动系统. 他给了每一个头牛一个电子牌号 当牛走过这个系统时,牛的名字将被自动读入. 每一头牛的电子名字是一个长度为M (1 &l ...

  2. 【BZOJ】1710: [Usaco2007 Open]Cheappal 廉价回文

    [算法]区间DP [题解]回文问题的套路做法:区间DP. f[i][j]表示区间i~j回文的最小代价,则有f[i][j]=min{①②③}. ①f[i+1][j]+min(a[s[i]],b[s[i] ...

  3. 1710: [Usaco2007 Open]Cheappal 廉价回文

    Description 为 了跟踪所有的牛,农夫JOHN在农场上装了一套自动系统. 他给了每一个头牛一个电子牌号 当牛走过这个系统时,牛的名字将被自动读入. 每一头牛的电子名字是一个长度为M (1 & ...

  4. 【bzoj1710】[Usaco2007 Open]Cheappal 廉价回文

    [bzoj1710][Usaco2007 Open]Cheappal 廉价回文 Description 为了跟踪所有的牛,农夫JOHN在农场上装了一套自动系统. 他给了每一个头牛一个电子牌号 当牛走过 ...

  5. BZOJ1710: [Usaco2007 Open]Cheappal 廉价回文

    len<=2000的字符串上,给出删掉和添加每种字符的花费,求把字符串变成回文串的最小花费. 首先每个字符添加和删除是一样的,因此花费在添加和删掉每个字符的花费中取小的. 如果每个字符的花费都是 ...

  6. bzoj 4044: [Cerc2014] Virus synthesis【回文自动机+dp】

    建回文自动机,注意到一个回文串是可以通过一个长度小于等于这个串长度的一半的回文串添上一些字符然后复制得到的,也就是在自动机上向fa走,相当于treedp 每次都走显然会T,记录一个up,指向祖先中最下 ...

  7. HDU2205 又见回文(区间DP)

    题意:给定两个字符串(可能为空串),求这两个串交叉组成新串的子串中的回文串的最大长度. 布尔型变量dp[i][j][k][l]表示串a从i到j,b从k到l能否组成新串,初始化为false,则采取区间动 ...

  8. bzoj1710【Usaco2007 Open】Cheappal 便宜回文

    1710: [Usaco2007 Open]Cheappal 便宜回文 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 466  Solved: 262 ...

  9. bzoj2084/luoguP3501 [Poi2010]Antisymmetry(回文自动机+dp)

    bzoj2084/luoguP3501 [Poi2010]Antisymmetry(回文自动机+dp) bzoj Luogu 对于一个01字符串,如果将这个字符串0和1取反后,再将整个串反过来和原串一 ...

随机推荐

  1. java发送短信验证码的功能实现

    总结一下发送短信验证码的功能实现 (题外话:LZ是在腾讯云买的第三方(山东鼎信)短信服务平台的接口,1块钱20次的套餐来练手,哈哈,给他们打个广告,有需要的可以去购买哈,下面是购买链接短信服务平台购买 ...

  2. 全文搜索(A-3)-用户建模

    用户模型可以分为静态模型.动态模型.混合推荐用户模型. 静态模型往往通过显式方式收集用户偏好信息: 动态模型通过隐式方式收集用户偏好信息: 基于内容的用户系统的推荐模型: 关键字匹配,空间向量模型 协 ...

  3. poj1984并查集的相对偏移

    #include<stdio.h>//典型题 #include<math.h> #define N 40010 struct node { int x,y,z; }pre[N] ...

  4. 网络编程进阶:并发编程之协程、IO模型

    协程: 基于单线程实现并发,即只用一个主线程(此时可利用的CPU只有一个)情况下实现并发: 并发的本质:切换+保存状态 CPU正在运行一个任务,会在两种情况下切走去执行其他任务(切换有操作系统强制控制 ...

  5. [K/3Cloud] 关于单据转换的问题

    1. 单据转换,是否支持重复下推,支持新增下推和更新下推? 答:支持重复下推,是否允许下推受以下因素: 1).源分录是否是有效状态(源单单头状态会自动影响分录,下同),例如已审核.未关闭.未作废: 2 ...

  6. 百度音乐免费API接口

    音乐分类: 1.新歌榜,2.热歌榜,11.摇滚榜,12.爵士,16.流行21.欧美金曲榜,22.经典老歌榜,23.情歌对唱榜,24.影视金曲榜,25.网络歌曲榜 说明:百度music web版全接口h ...

  7. js数组转换成json串 (JSON.stringify)

    例如: var giftlist[1490011777] = []; giftlist[1490011777]['id'] = 1490011777; giftlist[1490011777]['na ...

  8. POJ 2456_Aggressive cows

    题意: 给定N个位置,把C头牛分别放入,求相邻两头牛的最大距离. 分析: 即为求两头牛之间最小距离的最大值.二分搜索答案. 代码: #include<iostream> #include& ...

  9. 洛谷——P1458 顺序的分数 Ordered Fractions

    P1458 顺序的分数 Ordered Fractions 题目描述 输入一个自然数N,对于一个最简分数a/b(分子和分母互质的分数),满足1<=b<=N,0<=a/b<=1, ...

  10. 选择判断语句(switch)

    选择判断语句(switch) 一.switch语句格式 switch(表达式){ case 取值1: 执行语句: break: case 取值2: 执行语句: break: …...    defau ...