2481: 神奇的字符串

时间限制: 3 Sec  内存限制: 256 MB

提交: 8  解决: 3

[提交][状态][讨论版]

题目描述

输入

输出

样例输入

abcb
1000 1100
350 700
200 800
2000 2000
2000 2000
2000 2000
2000 2000
2000 2000
2000 2000
2000 2000
2000 2000
2000 2000
2000 2000
2000 2000
2000 2000
2000 2000
2000 2000
2000 2000
2000 2000
2000 2000
2000 2000
2000 2000
2000 2000
2000 2000
2000 2000
2000 2000 jelly
1000 1100
350 700
200 800
2000 2000
2000 432
2000 2000
2000 2000
2000 2000
2000 2000
20 2000
2000 2000
350 35
200 800
2000 2000
2000 2000
2000 2000
2000 2000
2000 2000
2000 2000
2000 2000
2000 2000
2000 2000
2000 2000
2000 2000
15 2000
2000 2000

样例输出

900
105

提示

来源

周甄陶

————————————————————————————————————————

思路:分析可知一定是先删去前面和后面然后一端添加字符,所以先n^2处理出前后删减的花费,然后用dp数字达标维护,用dp[i][j][0]表示区间[i,j]向前扩展成回文的最小花费,用dp[i][j][1]表示区间[i,j]向后扩展成回文的最小花费

#include <iostream>
#include<queue>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<set>
#include<cstring>
using namespace std;
#define LL long long int dp[1005][1005][2];
int a[30],b[30];
char s[1005];
int L[1005],R[1005];
bool dd[1005][1005]; int main()
{
while(~scanf("%s",s))
{ for(int i=0; i<26; i++)
scanf("%d%d",&a[i],&b[i]);
int n=strlen(s);
memset(dd,0,sizeof dd);
for(int i=1; i<=n; i++)
{
dd[i][i]=true;
}
for(int i=1; i<n; i++)
{
if(s[i-1]==s[i])
dd[i][i+1]=true;
}
for(int j=2; j<n; j++)
for(int i=1; i<=n; i++)
{
if(i+j>n)
break;
dd[i][i+j]=s[i-1]==s[i+j-1]&dd[i+1][i+j-1];
} for(int i=0; i<n; i++)
dp[i][i][0]=0,dp[i][i][1]=0;
for(int j=1; j<n; j++)
{
for(int i=1; i<=n; i++)
{
if(i+j>n) break; if(dd[i][i+j])
{
dp[i][i+j][0]= dp[i][i+j][1]=0;
}
else
{
dp[i][i+j][0]=dp[i][i+j-1][0]+b[s[i+j-1]-'a'];
dp[i][i+j][1]=dp[i+1][i+j][1]+b[s[i-1]-'a'];
} }
}
L[0]=0;
L[1]=a[s[0]-'a'];
for(int i=2; i<=n; i++)
{
L[i]=L[i-1]+a[s[i-1]-'a'];
}
R[n+1]=0;
R[n]=a[s[n-1]-'a'];
for(int i=n-1; i>0; i--)
{
R[i]=R[i+1]+a[s[i-1]-'a'];
} int mn=0x3f3f3f3f;
for(int i=1; i<=n; i++)
{
for(int j=n; j>=i; j--)
{
mn=min(mn,L[i-1]+R[j+1]+min(dp[i][j][0],dp[i][j][1]));
}
}
printf("%d\n",mn); } return 0;
}

ZUFE2481 神奇的字符串 2017-05-12 16:41 39人阅读 评论(0) 收藏的更多相关文章

  1. ZUFE2480: 神奇的序列 2017-05-12 16:45 39人阅读 评论(0) 收藏

    2480: 神奇的序列 时间限制: 4 Sec  内存限制: 256 MB 提交: 31  解决: 15 [提交][状态][讨论版] 题目描述 序列a如下: a[0] = A; a[1] = B; a ...

  2. c# 发送邮件、附件 分类: C# 2014-12-17 16:41 201人阅读 评论(0) 收藏

    WinForm窗体代码如下: <span style="font-size:14px;">using System; using System.Collections. ...

  3. HRBUST1313 火影忍者之~静音 2017-03-06 16:11 39人阅读 评论(0) 收藏

    火影忍者之-静音 传说中的火之国一年一度的公务员选拔又开始了!木叶忍者村此次也要从中选拔出5人来,作为即将上任的新火影纲手的小弟-,可是报考公务员的人数实在是太--多啦!所以纲手的贴身随从-静音小姐, ...

  4. HRBUST1315 火影忍者之~大战之后 2017-03-06 16:14 54人阅读 评论(0) 收藏

    火影忍者之-大战之后 经历了大战的木叶村现在急需重建,人手又少,所以需要尽可能多的接受外来的任务,以赚取报酬,重建村庄,假设你现在是木叶的一名高级忍者,有一大堆的任务等着你来做,但毕竟个人时间有限,所 ...

  5. Mahout快速入门教程 分类: B10_计算机基础 2015-03-07 16:20 508人阅读 评论(0) 收藏

    Mahout 是一个很强大的数据挖掘工具,是一个分布式机器学习算法的集合,包括:被称为Taste的分布式协同过滤的实现.分类.聚类等.Mahout最大的优点就是基于hadoop实现,把很多以前运行于单 ...

  6. 网上关于sort结构体排序都不完整,我来写一个完整版的 2014-08-09 16:50 60人阅读 评论(0) 收藏

    主要参考sort函数_百度文库, 但是那篇有错误 2.结构体排序,a升,b降,c降 平板视图 打印? 01 #include <iostream> 02 #include <algo ...

  7. NavBarControl控件 2015-07-23 16:56 2人阅读 评论(0) 收藏

    NavBarControl控件 1.      新建一个windows窗体应用程序项目 2.      在工具箱中的Navigation& Layout选项卡下找到NavBarControl, ...

  8. ubuntu文件管理常用命令 分类: linux ubuntu 学习笔记 2015-07-02 16:57 29人阅读 评论(0) 收藏

    1.关闭防火墙:ufw disable 2.以.开头的表示隐藏文件 3..和..分别代表当前目录以及当前目录的父目录 4.显示当前用户所在目录pwd 5.touch创建空文件 6.mkdir创建新目录 ...

  9. SQL string类型的数据按int类型排序 分类: SQL Server 2014-12-08 16:56 393人阅读 评论(0) 收藏

    说明: 我在做wms进销存软件时,发现一个问题:一张入库单(T_OutIn_BoxTop),入库扫描时要分成多箱,箱号(BoxTop_No)可以是数字也可以是字符串,所以箱号只能是字符串类型的,问题来 ...

随机推荐

  1. 自定义标签tld的使用

    在JSP中使用标签是很平常的事情,在制作自定义标签时,通常都需要写tld文件来定义标签的各种属性,对应的Java类,前缀等等.标签与tld文件紧紧相连,那么,到底应该怎么放置tld文件?在web.xm ...

  2. git 本地仓库与远程仓库的连接

    在远程如github新建一个项目名称为blog, 本地项目为store,是一个laravel框架项目,首先用 git init初始化本目,然后用git remote add origin git@gi ...

  3. mysql 8小时timeout问题

    MySQL> show variables like '%timeout%'; +--------------------------+-------+ | Variable_name      ...

  4. [Robot Framework] 校验字符串中是否包含某个子字符串,校验同时满足两个条件中任意一个

    ${tWarningMessage} Run Keyword If ${tIfExist} AutoItLibrary.Win Get Text Generate Fee Data warning m ...

  5. SVN 钩子 同步测试服务器

    http://blog.csdn.net/showso2006/article/details/6750441 多人开始使用subversion之后,就想着,要建立一个测试用的服务器,不需要把文件up ...

  6. json数据映射填充到html元素显示

    映射算法做了改进,支持name重复映射 <!DOCTYPE html> <html> <head> <meta charset="UTF-8&quo ...

  7. SparkStreaming--reduceByKeyAndWindow

    1.reduceByKeyAndWindow(_+_,Seconds(3), Seconds(2))     可以看到我们定义的window窗口大小Seconds(3s) ,是指每2s滑动时,需要统计 ...

  8. sql创建备份表和复制数据到备份表

    1.复制表结构及数据到新表CREATE TABLE 新表 SELECT * FROM 旧表 这种方法会将oldtable中所有的内容都拷贝过来,当然我们可以用delete from newtable; ...

  9. 2018.11.24 loj#111. 后缀排序(后缀数组)

    传送门 后缀排序模板题. 终于会后缀数组了(然而只会倍增并不会DC3DC3DC3). 在这里列举几个数组的意思: sai:sa_i:sai​:当前排名第iii的后缀的起始下标. rkirk_irki​ ...

  10. VC调试小结

    本机调试F5: 开始调试Shift+F5: 停止调试F10: 调试到下一句,这里是单步跟踪 F11: 调试到下一句,跟进函数内部Shift+F11: 从当前函数中跳出F9: 设置(取消)断点Outpu ...