汕头市队赛 SRM 09 C 撕书
C 撕书III-3 SRM 09
背景&&描述
琉璃双在撕书。
书总共有n页,每页都可以看作是一个数字。
琉璃读书喜欢来回地读。但他也因此发现了作者的灌水行为:有些连续的若干页正着读和倒着读完全一样,也就是说是回文的。
发生这种情况时,琉璃会非常地angry,把那些书页给撕掉。
汀捡到了本黑色的魔法书。因为担心杀死书后会带来麻烦,决定借琉璃的手把书处置掉。
大概就是每次选出剩余书页中的一个回文子串,拿给琉璃看....
汀比较懒,他想知道最少选多少次就能让琉璃把整本书都撕光。
注意,撕完一段之后会导致原本不相邻的两页变得相邻。
输入格式
第一行一个整数n,表示书的页数。
第二行为n个数字。
输出格式
一个整数,表示最少选多少次。
样例输入
7
1 4 4 2 3 2 1
样例输出
2
数据范围与约定
- 对于100%的数据:
,n个数字均为小于等于n的正整数。
样例解释
先撕掉第2,3页,然后把剩下的直接撕掉。
来源
cf原题
————————————————————————————————
dp还是太弱啊
枚举长度 f【i】【j】表示从i——j撕掉这一段所需要的次数
如果s【i】==s【j】 f【i】【j】可以从f【i+1】【j-1】转移过来
当然还要枚举端点判断是否有更优的情况
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int M=,inf=0x3f3f3f3f;
int read(){
int ans=,f=,c=getchar();
while(c<''||c>''){if(c=='-') f=-; c=getchar();}
while(c>=''&&c<=''){ans=ans*+(c-''); c=getchar();}
return ans*f;
}
int n;
int f[M][M],s[M];
int main()
{
n=read();
for(int i=;i<=n;i++) s[i]=read();
for(int i=;i<=n;i++) for(int j=;j<=n;j++) f[i][j]=inf;
for(int i=;i<=n;i++) f[i][i]=;
for(int i=;i<n;i++) f[i][i+]=f[i][i]+(s[i]!=s[i+]);
for(int k=;k<=n;k++){
for(int l=;l<=n-k+;l++){
int r=l+k-;
if(s[l]==s[r]) f[l][r]=f[l+][r-];
for(int k=l;k<r;k++) f[l][r]=min(f[l][r],f[l][k]+f[k+][r]);
}
}printf("%d\n",f[][n]);
return ;
}
汕头市队赛 SRM 09 C 撕书的更多相关文章
- 汕头市队赛 SRM 09 B 撕书
B 撕书II-3 SRM 09 背景&&描述 琉璃手头有一黑一白两本魔法书,一本是<缟玛瑙的不在证明>,另一本是<白色相簿1.5> 传说同时打开这两本书 ...
- 汕头市队赛 SRM 09 A 撕书
A 撕书I-3 SRM 09 背景&&描述 琉璃在撕书. 书总共有n页,都悬浮在数轴上,第i页的位置为,上面写着一个数字. 琉璃从右往左撕书.假如看到了第i页,就把在第 ...
- 汕头市队赛 SRM 06 A 撕书
A 撕书 SRM 06 背景&&描述 游行寺汀正在杀书. 书总共有n页,每页都可以看作是一个小写英文字母,所以我们可以把书看成长度为n的字符串s. 琉璃 ...
- 汕头市队赛 SRM 07 D 天才麻将少女kpm
这道题放了很久还是回来补了 D 天才麻将少女KPM SRM 07 背景&&描述 天才麻将少女KPM立志要在日麻界闯出一番名堂. KPM上周叒打了n场麻将,但她这次又没控分,而且 ...
- 汕头市队赛SRM 20 T2不净的圣杯
不净的圣杯 SRM 20 背景 作为一张BUG级别的卡,官方打算把它修改得人畜无害一些…… 虽然名字还没想好,但是能力大概是对敌方所有单位造成d点伤害,d为自己牌组中所有卡的编号的最大公约数.这无疑是 ...
- 汕头市队赛 SRM 07 B 好玩的麻将
B 好玩的麻将 SRM 07 背景&&描述 天才麻将少女KPM立志要在日麻界闯出一番名堂. KPM上周又打了n场麻将,又控了分使得自己的排名是1..n的一个排列. 但她 ...
- 汕头市队赛 SRM 06 C 秀恩爱
C 秀恩爱 SRM 06 背景&&描述 KPM坐在直升机上俯瞰小渔村景象. 渔村可看作二维平面,密密麻麻地到处都是单身狗,KPM当前所在坐标为(sx,s ...
- 汕头市队赛 SRM 06 B 起伏的排名
B 起伏的排名 SRM 06 背景&&描述 天才麻将少女KPM立志要在日麻界闯出一番名堂. 在上个星期她打了n场麻将,每场麻将都有n名玩家.KPM自然记得自己的n次排名. ...
- 汕头市队赛 SRM 08 B
B-3 SRM 08 描述 给长度为 n 的数列 A 和长度为 m 的数列 B,问有多少长度为 m 的数列 C 满足 输入格式 第一行俩整数 n 和 m 第二行 n 个整数 ,表示数列 A 第三行 m ...
随机推荐
- composer环境安装
PHP很多优秀的框架,例如Laravel等等,镜像都在国外,相关的包管理工具Composer也是在国外,所以安装失败的可能性很大,题主所示的就是因为连不上Composer.解决方法如下: 进入官网, ...
- 数据分析处理库Pandas——对象操作
Series结构 索引 修改 旧数据赋值给新数据,旧数据不变. 对某一数值进行修改,可以选择保留修改前或修改后的数值. 替换索引 修改某一个索引 添加 在数据1后添加数据2,数据1不改变. 添加一个数 ...
- pytorch中词向量生成的原理
pytorch中的词向量的使用 在pytorch我们使用nn.embedding进行词嵌入的工作. 具体用法就是: import torch word_to_ix={'hello':0,'world' ...
- 17-比赛1 B - 子串计算 Chef and his string challenge (string的运用)
Chef's best friend Jerry gives Chef a string A and wants to know the number of string A that can be ...
- ArrayList & Vector的源码实现
#ArrayList & Vector #####前言: 本来按照计划,ArrayList和Vector是分开讲的,但是当我阅读了ArrayList和Vector的源码以后,我就改变了注意,把 ...
- PHP.19-验证码生成
生成验证码 思路:先定义验证码函数getCode() //绘制验证码 $num = 4; //字符长度 getCode($num, 2); 1.创建画布,分配颜色 imagecreatetruecol ...
- 1008: [HNOI2008]越狱(计数问题)
1008: [HNOI2008]越狱 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 11361 Solved: 4914[Submit][Status ...
- webstrom Certificate validation failed
今天好烦.因为装了一个webstrome,我的svn不管用了. 为了防止webstrom,我的日期改了,日期改了,csdn登不上去了.告诉我时期不对. 草草哦哦. 这就是那个svn出问题之后的画面. ...
- 腾讯课堂之前端开发html5css3javascriptjQueryJS年薪20万
第一章 网页制作零基础 第一节 什么是HTML 第二节 HTML基本语法 第三节 HTML结构标签 第四节 HTML常用标签及属性 第五节 HTML无序列表UL标签 第六节 HTML定义列表DL标签 ...
- js valueOf和toString方法
JavaScript原生提供一个Object对象,所有其他对象都继承自这个对象,Object对象有valueOf和valueOf方法,所以所有JS数据类型都继承了这两种方法. valueOf:返回 ...