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 撕书的更多相关文章

  1. 汕头市队赛 SRM 09 B 撕书

    B 撕书II-3 SRM 09 背景&&描述 琉璃手头有一黑一白两本魔法书,一本是<缟玛瑙的不在证明>,另一本是<白色相簿1.5>     传说同时打开这两本书 ...

  2. 汕头市队赛 SRM 09 A 撕书

    A 撕书I-3 SRM 09 背景&&描述 琉璃在撕书.     书总共有n页,都悬浮在数轴上,第i页的位置为,上面写着一个数字.     琉璃从右往左撕书.假如看到了第i页,就把在第 ...

  3. 汕头市队赛 SRM 06 A 撕书

    A 撕书 SRM 06 背景&&描述 游行寺汀正在杀书.         书总共有n页,每页都可以看作是一个小写英文字母,所以我们可以把书看成长度为n的字符串s.         琉璃 ...

  4. 汕头市队赛 SRM 07 D 天才麻将少女kpm

    这道题放了很久还是回来补了 D 天才麻将少女KPM SRM 07 背景&&描述 天才麻将少女KPM立志要在日麻界闯出一番名堂.     KPM上周叒打了n场麻将,但她这次又没控分,而且 ...

  5. 汕头市队赛SRM 20 T2不净的圣杯

    不净的圣杯 SRM 20 背景 作为一张BUG级别的卡,官方打算把它修改得人畜无害一些…… 虽然名字还没想好,但是能力大概是对敌方所有单位造成d点伤害,d为自己牌组中所有卡的编号的最大公约数.这无疑是 ...

  6. 汕头市队赛 SRM 07 B 好玩的麻将

    B 好玩的麻将 SRM 07 背景&&描述 天才麻将少女KPM立志要在日麻界闯出一番名堂.     KPM上周又打了n场麻将,又控了分使得自己的排名是1..n的一个排列.     但她 ...

  7. 汕头市队赛 SRM 06 C 秀恩爱

    C 秀恩爱 SRM 06 背景&&描述         KPM坐在直升机上俯瞰小渔村景象.         渔村可看作二维平面,密密麻麻地到处都是单身狗,KPM当前所在坐标为(sx,s ...

  8. 汕头市队赛 SRM 06 B 起伏的排名

    B 起伏的排名 SRM 06 背景&&描述 天才麻将少女KPM立志要在日麻界闯出一番名堂.     在上个星期她打了n场麻将,每场麻将都有n名玩家.KPM自然记得自己的n次排名.   ...

  9. 汕头市队赛 SRM 08 B

    B-3 SRM 08 描述 给长度为 n 的数列 A 和长度为 m 的数列 B,问有多少长度为 m 的数列 C 满足 输入格式 第一行俩整数 n 和 m 第二行 n 个整数 ,表示数列 A 第三行 m ...

随机推荐

  1. Reward HDU - 2647

    传送门     Dandelion's uncle is a boss of a factory. As the spring festival is coming , he wants to dis ...

  2. MySQL常用命令基础操作

    MySQL启动与更改密码 mysql启动基本原理说明: /etc/init.d/mysqld是一个shell启动脚本,启动后最终会调用,mysqld_safe脚本,最后调用mysqld服务启动mysq ...

  3. Hive 的企业优化

    优化 数据优化 一.从大表拆分成小表(更快地检索) 引用:Hive LanguageManual DDL eg2:常用于分表 create table if not exists default.ce ...

  4. MyBatis---集合查询(一对多)

    这里的集合查询即一对多的数据联合查询.如一个用户多次登录的信息查询 要实现这样的联合查询需要在用户实体类中添加登录实体类的一个集合属性字段,表中不存在该字段. <resultMap id=&qu ...

  5. phpstorm调试配置 Xdebug

    这已经楼主第二次因为phpstorm的调试配置折腾了几个小时,这次一定要记下来!!! 以Xdebug chrome浏览器为例 一:安装 JetBrains IDE Support 二:安装 Xdebu ...

  6. 教你一步学会安装Hue

    一.简介 hue是一个开源的apache hadoop ui系统,由cloudear desktop演化而来,最后cloudera公司将其贡献给了apache基金会的hadoop社区,它基于pytho ...

  7. 【转】Android 添加系统服务

    Android系统本身提供了很多系统服务,如WindowManagerService,PowerManagerService等.下面描述一下添加一个系统服务的具体步骤. 1.  撰写一个aidl文件, ...

  8. atomic integer 实现

    public final int getAndAddInt(Object o, long offset, int delta) { int v; do { v = getIntVolatile(o, ...

  9. Scrapy使用示例

    很多网站都提供了浏览者本地的天气信息,这些信息是如何获取到的呢,方法有很多种,大多是利用某些网站提供的天气api获取的,也有利用爬虫采集的.本文就介绍如何用Scrapy来采集天气信息(从新浪天气频道采 ...

  10. ERC720和erc721的区别

    有一阵子,Ethereum网络突然变的特别拥堵,原因是兴起了一款以太坊养猫的Dapp游戏,超级可爱的猫形象,再加上配种,繁殖和拍卖等丰富的玩法,风靡了币圈. 一时间币圈大大小小的人都在撸猫,以太坊网络 ...