NYOJ 1023 还是回文(DP,花最少费用形成回文串)

简介:

/*
   题意:给出一串字符(全部是小写字母),添加或删除一个字符,都会产生一定的花费。
   那么,将字符串变成回文串的最小花费是多少呢? 
   
   思路:如果一个字符串增加一个字符 x可以形成一个回文串,那么从这个字符串中删除这个字符 x
         同样也能形成回文串!
         所以我们只记录删除,和增加这个字符 x 的最小的费用就好了!->转变成添加多少个字符形成回文串费用最少! 
         
         str[i]!=str[k] 
         dp[i][j]=min(dp[i][j-1]+cost[str[k]-'a'], dp[i+1][j-1]+cost[str[i]-'a']) ;
         
         str[i]==str[k]
         dp[i][j]=dp[i+1][j-2];
         
*/
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#define N 2005 
using namespace std;

int dp[N][N];

int cost[30]; 

char str[N]; 

int main(){
    int m, n;
    while(scanf("%d%d", &m, &n)!=EOF){
        scanf("%s", str+1);
        memset(cost, 0, sizeof(cost)); 
        while(m--){
           char ch;
           int a, b;
           getchar();
           scanf("%c %d %d", &ch, &a, &b);
           cost[ch-'a']=min(a, b);
        }
        for(int i=1; i<=n; ++i)
           dp[i][1]=0;
        for(int j=2; j<=n; ++j)
           for(int i=1; i+j-1<=n; ++i){
               int k=i+j-1;
               if(str[i]!=str[k])
                  dp[i][j]=min(dp[i][j-1]+cost[str[k]-'a'], dp[i+1][j-1]+cost[str[i]-'a']) ;
               else dp[i][j]=dp[i+1][j-2]; 
           }   
           
        printf("%d\n", dp[1][n]);
    } 
    return 0;
}

目录
相关文章
|
存储 关系型数据库 MySQL
「MySQL架构」MariaDB versus MySQL: Compatibility
「MySQL架构」MariaDB versus MySQL: Compatibility
|
Go 数据库
数据库脚本规范
Schema Change /*  * Description:  创建Table规范  * Created:       * CreateDate:   2013-03-15 ...
1155 0
|
SQL
10G 中的FLASHBACK TABLE 和FLASHBACK DROP
(学习笔记) 在10G众多的特性中我觉得这两个特性是相当有用的。比如很多时候我们会遇到用户误删除了一个表或者一个表中的某些记录,这个时候这两个特性中的其中一个就可以用来完成这样的工作。
650 0
|
5天前
|
搜索推荐 编译器 Linux
一个可用于企业开发及通用跨平台的Makefile文件
一款适用于企业级开发的通用跨平台Makefile,支持C/C++混合编译、多目标输出(可执行文件、静态/动态库)、Release/Debug版本管理。配置简洁,仅需修改带`MF_CONFIGURE_`前缀的变量,支持脚本化配置与子Makefile管理,具备完善日志、错误提示和跨平台兼容性,附详细文档与示例,便于学习与集成。
305 116
|
20天前
|
域名解析 人工智能
【实操攻略】手把手教学,免费领取.CN域名
即日起至2025年12月31日,购买万小智AI建站或云·企业官网,每单可免费领1个.CN域名首年!跟我了解领取攻略吧~
|
7天前
|
数据采集 人工智能 自然语言处理
Meta SAM3开源:让图像分割,听懂你的话
Meta发布并开源SAM 3,首个支持文本或视觉提示的统一图像视频分割模型,可精准分割“红色条纹伞”等开放词汇概念,覆盖400万独特概念,性能达人类水平75%–80%,推动视觉分割新突破。
503 45
Meta SAM3开源:让图像分割,听懂你的话