hdu 4628 Pieces(状态压缩+记忆化搜索)
Pieces
Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)
Total Submission(s): 1811 Accepted Submission(s): 932
Given a string s.We can erase a subsequence of it if this subsequence is palindrome in one step. We should take as few steps as possible to erase the whole sequence.How many steps do we need?
For example, we can erase abcba from axbyczbea and get xyze in one step.
T<=10.
2
aa
abb
1
2
#include<stdio.h>
#include<string.h>
const int inf=20;
int dp[1<<17],len,flag[1<<17];
char str[20];
bool judge(int sta){
char s[20];
int k=0 , l , r;
for(int i=0; (1<<i)<=sta; i++)
if((1<<i)&sta)
s[k++]=str[i];
if(k==0)return 0;
if(k==1)return 1;
if(k&1){
l=k/2-1; r=l+2;
}
else{
l=k/2-1; r=l+1;
}
while(r<k&&s[l]==s[r])l--,r++;
if(r<k)return 0;
else return 1;
}
void dfs(int sta){
if(dp[sta]!=inf)
return ;
for(int s=sta-1;s>0; s=(s-1)&sta){
if(!flag[s^sta])continue;
dfs(s);
if(dp[sta]>dp[s]+1)
dp[sta]=dp[s]+1;
}
if(judge(sta))
if(dp[sta]>1)
dp[sta]=1;
}
int main()
{
int T;
scanf("%d",&T);
while(T--){
scanf("%s",str);
len=strlen(str);
for(int i=(1<<len)-1; i>0; i--){
dp[i]=inf;
flag[i]=judge(i);
}
dp[0]=0;flag[0]=0; dfs((1<<len)-1);
printf("%d\n",dp[(1<<len)-1]);
}
return 0;
}
hdu 4628 Pieces(状态压缩+记忆化搜索)的更多相关文章
- HDU 4628 Pieces(状态压缩+记忆化搜索)
http://acm.hdu.edu.cn/showproblem.php?pid=4628 题意:给个字符窜,每步都可以删除一个字符窜,问最少用多少步可以删除一个字符窜分析:状态压缩+记忆化搜索 ...
- loj 1011(状态压缩+记忆化搜索)
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=25837 思路:状态压缩+记忆化搜索. #include<io ...
- Doing Homework---hdu1074(状态压缩&&记忆化搜索)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1074 有n(n<=15)门课需要做作业,每门课所需时间是used_time以及每门课作业上交的最 ...
- ACM学习历程—ZOJ3471 Most Powerful(dp && 状态压缩 && 记忆化搜索 && 位运算)
Description Recently, researchers on Mars have discovered N powerful atoms. All of them are differen ...
- GYM 101933E 状态压缩 + 记忆化搜索
题意:我方有n个士兵,敌方有m个,每方士兵都有一个血量,现在有k轮无差别炮火打击,每次都会从存活的士兵中随机选一人,这名士兵的HP就-1,问对方被团灭的概率有多大? 思路:因为n和m的范围很小,我们可 ...
- light oj 1011 - Marriage Ceremonies (状态压缩+记忆化搜索)
题目链接 大概题意是有n个男的n个女的(原谅我这么说,我是粗人),给你一个n*n的矩阵,第i行第j列表示第i个女(男)对第j个男(女)的好感度,然后要安排n对相亲,保证都是正常的(无搞基百合之类的), ...
- hdu 4628 Pieces 状态压缩dp
Pieces Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) Total S ...
- HDU 1176 免费馅饼(记忆化搜索)
免费馅饼 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
- HDU 1428 漫步校园(记忆化搜索,BFS, DFS)
漫步校园 http://acm.hdu.edu.cn/showproblem.php?pid=1428 Problem Description LL最近沉迷于AC不能自拔,每天寝室.机房两点一线.由于 ...
- hdu 5389 Zero Escape(记忆化搜索)
Problem Description Zero Escape, is a visual novel adventure video game directed by Kotaro Uchikoshi ...
随机推荐
- USACO holstein 超时代码
/* ID:kevin_s1 PROG:holstein LANG:C++ */第八组数据跪了.半天都不出结果 #include <iostream> #include <cstdi ...
- J2SE基础:10集合2
2:列表(List) 特点: (1):有序的(插入的顺序有序),元素有索引值. (2):同意反复. set/get/listIterator/subList ArrayList 特点:(1):底层数组 ...
- 0x12 队列
感觉和栈那一讲一样简单啊.. poj2259 这个乱搞硬模拟吧...没更新last WA了N次...(叫你懒得写拍) #include<cstdio> #include<iostre ...
- hdoj--2522--A simple problem(数学模拟)
A simple problem Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- lightoj--1245--Harmonic Number (II)(数学推导)
Harmonic Number (II) Time Limit: 3000MS Memory Limit: 32768KB 64bit IO Format: %lld & %llu S ...
- c#常量如何使用
c#中类中定义一个常量,在其他地方使用的时候使用类名.常量
- layer Tips参数使用
layer.tips(content, follow, options) - tips层type:4的深度定制.也是我本人比较喜欢的一个层类型,因为它拥有和msg一样的低调和自觉,而且会智能定位,即灵 ...
- 基于Doxygen的C/C++注释原则
基于Doxygen的C/C++注释原则 标注总述 .文件头标注 . 命名空间标注 . 类.结构.枚举标注 . 函数注释原则 . 变量注释 . 模块标注 . 分组标注 总述 华丽的分隔线 //----- ...
- tp5数据库操作 Db类
一.链接数据库 1.配置文件定义 application\database.php 注意:数据表前缀更改,在文件的prefix选项 2.类定义 二.数据库的基本使用 namespace app\de ...
- indexOf实际试用方法
用于搜索和查找关键字个数或者位置 例如: package zifu; public class tianqi { public static void main (String args[]){ St ...