ZUFE2481 神奇的字符串 2017-05-12 16:41 39人阅读 评论(0) 收藏
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) 收藏的更多相关文章
- ZUFE2480: 神奇的序列 2017-05-12 16:45 39人阅读 评论(0) 收藏
2480: 神奇的序列 时间限制: 4 Sec 内存限制: 256 MB 提交: 31 解决: 15 [提交][状态][讨论版] 题目描述 序列a如下: a[0] = A; a[1] = B; a ...
- c# 发送邮件、附件 分类: C# 2014-12-17 16:41 201人阅读 评论(0) 收藏
WinForm窗体代码如下: <span style="font-size:14px;">using System; using System.Collections. ...
- HRBUST1313 火影忍者之~静音 2017-03-06 16:11 39人阅读 评论(0) 收藏
火影忍者之-静音 传说中的火之国一年一度的公务员选拔又开始了!木叶忍者村此次也要从中选拔出5人来,作为即将上任的新火影纲手的小弟-,可是报考公务员的人数实在是太--多啦!所以纲手的贴身随从-静音小姐, ...
- HRBUST1315 火影忍者之~大战之后 2017-03-06 16:14 54人阅读 评论(0) 收藏
火影忍者之-大战之后 经历了大战的木叶村现在急需重建,人手又少,所以需要尽可能多的接受外来的任务,以赚取报酬,重建村庄,假设你现在是木叶的一名高级忍者,有一大堆的任务等着你来做,但毕竟个人时间有限,所 ...
- Mahout快速入门教程 分类: B10_计算机基础 2015-03-07 16:20 508人阅读 评论(0) 收藏
Mahout 是一个很强大的数据挖掘工具,是一个分布式机器学习算法的集合,包括:被称为Taste的分布式协同过滤的实现.分类.聚类等.Mahout最大的优点就是基于hadoop实现,把很多以前运行于单 ...
- 网上关于sort结构体排序都不完整,我来写一个完整版的 2014-08-09 16:50 60人阅读 评论(0) 收藏
主要参考sort函数_百度文库, 但是那篇有错误 2.结构体排序,a升,b降,c降 平板视图 打印? 01 #include <iostream> 02 #include <algo ...
- NavBarControl控件 2015-07-23 16:56 2人阅读 评论(0) 收藏
NavBarControl控件 1. 新建一个windows窗体应用程序项目 2. 在工具箱中的Navigation& Layout选项卡下找到NavBarControl, ...
- ubuntu文件管理常用命令 分类: linux ubuntu 学习笔记 2015-07-02 16:57 29人阅读 评论(0) 收藏
1.关闭防火墙:ufw disable 2.以.开头的表示隐藏文件 3..和..分别代表当前目录以及当前目录的父目录 4.显示当前用户所在目录pwd 5.touch创建空文件 6.mkdir创建新目录 ...
- SQL string类型的数据按int类型排序 分类: SQL Server 2014-12-08 16:56 393人阅读 评论(0) 收藏
说明: 我在做wms进销存软件时,发现一个问题:一张入库单(T_OutIn_BoxTop),入库扫描时要分成多箱,箱号(BoxTop_No)可以是数字也可以是字符串,所以箱号只能是字符串类型的,问题来 ...
随机推荐
- 改变dos的编码方式
chcp 936 改变成 gbk chcp 65001 改成 utf-8 删除MySqlite文件 generic_x86:/data/data/com.example.lifen.sqlite/da ...
- iOS.C
iOS开发中C语言的应用: 1. NS_ENUM & NS_OPTIONS http://nshipster.com/ns_enum-ns_options/
- 20172306《Java程序设计》第五周学习总结
20172306 2016-2017-2 <Java程序设计>第五周学习总结 教材学习内容总结 第五章主要学习了if以及while的语句的运用 运算符:== 代表相等,是两个之间的内存地址 ...
- MFC窗口颜色的设置
本文主要介绍对话框背景色以及控件颜色的设置(SetDialogBkColor()不再被支持). 对话框背景色的设置 1.重载OnPaint()函数,即WM_PAINT消息,代码如下所示: void C ...
- C++ 的虚析构函数
当一个基类的指针指向一个派生类的对象,并用该基类的指针去删除或者析构派生类对象时,如果基类的析构函数不是声明为虚函数,那么在析构时基类的析构函数将会被直接调用,派生类的析构函数应为没被调用而导致内存泄 ...
- swift 中使用weak self
request.responseString(encoding: NSUTF8StringEncoding) {[weak self] (res) -> Void in if let stron ...
- powershell上传证书
https://www.cnblogs.com/threestone/p/4001632.html powershell上传证书
- 提升HTML5的性能体验系列之五 webview启动速度优化及事件顺序解析
webview加载时有5个事件.触发顺序为loading.titleUpdate.rendering.rendered.loaded.webview开始载入页面时触发loading,载入过程中如果&l ...
- CXF wsdl2java (转载)
2011-03-28 14:27 9735人阅读 评论(2) 收藏 举报 servicewebserviceinterfacejavastringserver CXF wsdl2Java 一. 简介 ...
- The Django Book第六章(Admin)随笔
要使用Django自带的管理界面,首先得激活- 激活的前提首先在你的项目的seeting目录下的INSTALL_APPS必须有以下的的包 django.contrib.admin django.con ...