8471   切割回文

描述

阿福最近对回文串产生了非常浓厚的兴趣。

如果一个字符串从左往右看和从右往左看完全相同的话,那么就认为这个串是一个回文串。例如,“abcaacba”是一个回文串,“abcaaba”则不是一个回文串。

阿福现在强迫症发作,看到什么字符串都想要把它变成回文的。阿福可以通过切割字符串,使得切割完之后得到的子串都是回文的。

现在阿福想知道他最少切割多少次就可以达到目的。例如,对于字符串“abaacca”,最少切割一次,就可以得到“aba”和“acca”这两个回文子串。

输入
输入的第一行是一个整数 T (T <= 20) ,表示一共有 T 组数据。
接下来的 T 行,每一行都包含了一个长度不超过的 1000 的字符串,且字符串只包含了小写字母。
输出
对于每组数据,输出一行。该行包含一个整数,表示阿福最少切割的次数,使得切割完得到的子串都是回文的。
样例输入
3
abaacca
abcd
abcba
样例输出
1
3
0
提示
对于第一组样例,阿福最少切割 1 次,将原串切割为“aba”和“acca”两个回文子串。
对于第二组样例,阿福最少切割 3 次,将原串切割为“a”、“b”、“c”、“d”这四个回文子串。
对于第三组样例,阿福不需要切割,原串本身就是一个回文串。
划分型DP 
f[ i ] 表示前 i 个需要切割的次数
 #include "bits/stdc++.h"

 using namespace std ;
const int maxN = ;
const int INF = ; int Judge [ maxN ][ maxN ] ;
char s[ maxN ] ;
int f[ maxN ] ; inline int gmin ( int x , int y ) { return x < y ? x : y ; } inline void Init ( const int n ) {
for ( int i= ; i<=n ; ++i ) Judge[ i ][ i ] = true ;
for(int i= ; i<=n ; ++i ) {
for(int L= ; i-L>= && i+L<=n ; ++L ) {
if ( s [ i - L ] != s [ i + L ] ) break;
else Judge[ i - L ][ i + L ] = true ;
}
for(int L= ; i-L>= && i+L+<=n ; ++L ) {
if ( s [ i - L ] != s [ i + L + ] ) break;
else Judge[ i - L ][ i + L + ] = true ;
}
}
} int main ( ) {
int T ;
scanf ( "%d" , &T ) ;
while ( T-- ) {
memset ( f , 0x7f , sizeof ( f ) ) ;
memset ( Judge , false , sizeof ( Judge ) ) ;
scanf ( "%s" , s + ) ;
int Len = strlen ( s + ) ;
Init ( Len ) ; for ( int i= ; i<=Len ; ++i ) {
if ( Judge [ ][ i ] ) {f[ i ] = ; continue ;}
for ( int j= ; j<i ; ++j ) {
if ( Judge[ j + ][ i ] ) {
f[ i ] = gmin ( f[ i ] , f[ j ] + ) ;
}
}
}
printf ( "%d\n" , f[ Len ] ) ;
}
return ;
}

2016-10-27  12:50:52

NOI 题库 8471 题解的更多相关文章

  1. NOI 题库 9272 题解

    9272   偶数个数字3 描述 在所有的N位数中,有多少个数中有偶数个数字3? 输入 一行给出数字N,N<=1000 输出 如题 样例输入 2 样例输出 73 Solution : 令f ( ...

  2. NOI题库刷题日志 (贪心篇题解)

    这段时间在NOI题库上刷了刷题,来写点心得和题解 一.寻找平面上的极大点 2704:寻找平面上的极大点 总时间限制:  1000ms  内存限制:  65536kB 描述 在一个平面上,如果有两个点( ...

  3. NOI题库 1768最大子矩阵 题解

    NOI题库 1768最大子矩阵  题解     总时间限制: 1000ms 内存限制: 65536kB   描述   已知矩阵的大小定义为矩阵中所有元素的和.给定一个矩阵,你的任务是找到最大的非空(大 ...

  4. NOI题库 09:图像旋转翻转变换

    NOI题库开始的题,也是略水,当然也是大水,所以彼此彼此 09:图像旋转翻转变换 总时间限制: 1000ms 内存限制: 65536kB 描述 给定m行n列的图像各像素点灰度值,对其依次进行一系列操作 ...

  5. NOI题库-小学奥赛QwQ

    今天Loli教育我们让我们来看看NOI题库的奥赛部分,不过,为何是小学的( ⊙ o ⊙ )啊!感觉智商被各种侮辱. 余数相同问题: 描述 已知三个正整数 a,b,c. 现有一个大于1的整数x,将其作为 ...

  6. noi题库(noi.openjudge.cn) 1.7编程基础之字符串T31——T35

    T31 字符串P型编码 描述 给定一个完全由数字字符('0','1','2',-,'9')构成的字符串str,请写出str的p型编码串.例如:字符串122344111可被描述为"1个1.2个 ...

  7. noi题库(noi.openjudge.cn) 1.7编程基础之字符串T21——T30

    T21:单词替换 描述 输入一个字符串,以回车结束(字符串长度<=100).该字符串由若干个单词组成,单词之间用一个空格隔开,所有单词区分大小写.现需要将其中的某个单词替换成另一个单词,并输出替 ...

  8. NOI题库192 生日蛋糕

    192:生日蛋糕 总时间限制: 5000ms 内存限制: 65536kB 描述 7月17日是Mr.W的生日,ACM-THU为此要制作一个体积为Nπ的M层生日蛋糕,每层都是一个圆柱体. 设从下往上数第i ...

  9. 数据排序 第三讲( 各种排序方法 结合noi题库1.10)

    说了那么多种排序方法了,下面就来先做几个题吧 06:整数奇偶排序 查看 提交 统计 提问 总时间限制:  1000ms 内存限制:  65536kB 描述 给定10个整数的序列,要求对其重新排序.排序 ...

随机推荐

  1. 【Android自学日记】两种适配器的使用

    ArrayAdapter适配器: (1)用于显示基本的文字内容 (2)基本使用过程:新建适配器---创建或加载数据源---适配器加载数据源---视图加载适配器 ArrayAdapter(上下文,当前L ...

  2. instanceof操作符

    instanceof是Java.php的一个二元操作符(运算符),和==,>,<是同一类东西.由于它是由字母组成的,所以也是Java的保留关键字.它的作用是判断其左边对象是否为其右边类的实 ...

  3. 关于SQL语句查询区分大小写

    在需要区分大小的字段后添加:collate Chinese_PRC_CS|CI_AS|AI  CI表示:不区分大小写 CS表示:区分大小写 AI表示: 指定不区分重音 AS表示:指定区分重音. 例:查 ...

  4. PHP中常见的提示对照表

    .Notice: Undefined variable: 变量名 in 注:使用了一个没有被定义的变量 .Parse error: syntax error, unexpected T_ELSE in ...

  5. 2016 Google code jam 答案

    二,RoundC import java.io.BufferedReader; import java.io.FileInputStream; import java.io.FileNotFoundE ...

  6. 一次erlang 节点CPU严重波动排查

    新服务上线后观察到,CPU在10 ~ 70%间波动严重,但从每秒业务计数器看业务处理速度很平均. 接下来是排查步骤: 1. dstat -tam 大概每10s一个周期,网络流量开始变得很小,随后突然增 ...

  7. 解决mysql Table ‘xxx’ is marked as crashed and should be repaired的问题。

    解决mysql Table 'xxx' is marked as crashed and should be repaired的问题. 某个表在进行数据插入和更新时突然出现Table 'xxx' is ...

  8. Swift 学习中的一点体会,不断更新中。。。

    随着Xcode 8的发布,swift 3.0终于来了.又有一大批api名字发生了变化.但是感觉3.0之后的变化应该会小些,因此再重新仔细学习一下. 1. 关于swift引入的Computed Prop ...

  9. java 深入技术八(内省)

    1. javabean的软件设计思想 2.内省:封装了java反射,提供直接操作属性的Setter和getter方法的方法 3.核心API:BeanInfo java 的描述信息,Introspect ...

  10. SB Admin 2 学习笔记1

    需要掌握能够搭建起一个 dashboard 的能力, 因为很少有运维开发团队有专职的前端, bootstrap 也要讲个基本法. SB Admin 2, 一个免费的 bootstrap theme, ...