lightoj 1025【区间DP】
题意:
给出一个word,求有多少种方法你从这个word清除一些字符而达到一个回文串。
思路:
区间问题,还是区间DP;
我判断小的区间有多少,然后往外扩大一点。
dp[i,j]就代表从i到j的方案数。
状态转移:
其实对于在任意区间[i ,j],都可以,
在子区间[i+1,j]中可以直接去掉s[j]时,顺便去掉s[i],所以就有它的方案,
在子区间[i,j-1]中可以直接去掉s[i]时,顺便去掉s[j],所以就有它的方案,
但是s[i],s[j]不相等的时候
dp[i+1,j],dp[i,j-1]会重复一个情况(把s[i]和s[j]都删除了)
所以再减去一个dp[i+1,j-1]就好了;
相等的话,虽然可以直接把两端去掉,但是我们可以把多出来的这一部分首尾加上s[i]和s[j],
这样就又是不同的情况了,所以不需要再减去。
然后还有一种特殊的情况就是把区间[i+1, j-1]全部删完,只留一个s[i]和s[j]
膜泰巨blog【点这里~】
#include<bits/stdc++.h>
#include<string.h>
using namespace std;
typedef long long LL;
typedef unsigned long long ULL;
const double eps=1e-5;
const double pi=acos(-1.0);
const int mod=1e8+7;
const LL INF=0x3f3f3f3f;
const int N=66;
char s[N];
LL solve()
{
LL dp[N][N];
int len=strlen(s+1);
memset(dp,0,sizeof(dp));
for(int i=1;i<=len;i++)
{
for(int j=1;(j+i-1)<=len;j++)
{
int k=j+i-1;
dp[j][k]=dp[j+1][k]+dp[j][k-1];
if(s[j]==s[k])
dp[j][k]+=1;
else
dp[j][k]-=dp[j+1][k-1];
}
}
return dp[1][len];
}
int main()
{
int cas=1;
int t;
scanf("%d",&t);
while(t--)
{
LL ans;
scanf("%s",s+1);
ans=solve();
printf("Case %d: %lld\n",cas++,ans);
}
return 0;
}
lightoj 1025【区间DP】的更多相关文章
- lightoj 1025 区间dp
#include<bits/stdc++.h> using namespace std; typedef long long ll; char a[70]; ll dp[70][70]; ...
- hdu 5693 && LightOj 1422 区间DP
hdu 5693 题目链接http://acm.hdu.edu.cn/showproblem.php?pid=5693 等差数列当划分细了后只用比较2个或者3个数就可以了,因为大于3的数都可以由2和3 ...
- LightOJ 1422 (区间DP)
题目链接: http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=27130 题目大意:按顺序去参加舞会.每个舞会对衣服都有要求.可以 ...
- lightoj 1033 区间dp
题目链接:http://lightoj.com/volume_showproblem.php?problem=1033 #include <cstdio> #include <cst ...
- lightoj 1031 区间dp
题目链接: http://lightoj.com/volume_showproblem.php?problem=1031 #include<cstdio> #include<cstr ...
- LightOJ 1422 区间DP Halloween Costumes
d(i, j)表示第i天到第j天至少要穿多少件衣服. 先不考虑第i天和后面 i+1 ~ j 天的联系,那就是至少要穿 1 + d(i+1, j)件衣服. 再看状态转移,如果后面第k(i+1 ≤ k ≤ ...
- Lightoj 1025 - The Specials Menu (区间DP)
题目链接: Lightoj 1025 - The Specials Menu 题目描述: 给出一个字符串,可以任意删除位置的字符,也可以删除任意多个.问能组成多少个回文串? 解题思路: 自从开始学dp ...
- 区间DP LightOJ 1422 Halloween Costumes
http://lightoj.com/volume_showproblem.php?problem=1422 做的第一道区间DP的题目,试水. 参考解题报告: http://www.cnblogs.c ...
- LightOJ 1422 Halloween Costumes 区间dp
题意:给你n天需要穿的衣服的样式,每次可以套着穿衣服,脱掉的衣服就不能再穿了,问至少要带多少条衣服才能参加所有宴会 思路:dp[i][j]代表i-j天最少要带的衣服 从后向前dp 区间从大到小 更新d ...
随机推荐
- 高速清除winXP系统中explorer.exe病毒
关于这个explorer.exe病毒.是眼下xp最为常见的一个病毒,会大量的消耗系统资源,造成电脑特别的卡顿. 1.关闭还原(假设没有,则跳过),为的是防止我们改动后,还原之后又回来了. 2.打开注冊 ...
- MYSQL时间戳的处理
date为需要处理的参数(该参数是Unix 时间戳),可以是字段名,也可以直接是Unix 时间戳字符串 后面的 '%Y%m%d' 主要是将返回值格式化 例如: mysql>SELECT FROM ...
- mac系统下为emacs设置中文字体,解决乱码问题
近期换了个系统,如今用mac系统. 当打开emacs后,中文支持的不是非常好.有的地方能显示.在.el文件的凝视里显示为口口口口口口口口这种框.例如以下图所看到的 找了半天.是由于中文字体的问题.仅仅 ...
- iOS UIButton选中状态切换
UIButton*payBtn = [UIButtonbuttonWithType:UIButtonTypeCustom]; payBtn.frame=CGRectMake(size.width-24 ...
- Redis+EJB实现缓存(一)
上篇博客大概的对Redis做了一个主要的了解.由于刚刚接触自己也不太明确.所以上篇博客写的乱七八糟的.这篇由于项目须要,学习了一下Redis和EJB集成. 如今脑子相对照较清晰了一些. 实现思 ...
- HDOJ_1000
#include int main() { int i, j; while(scanf("%d%d", &i, &j) == 2) printf("%d\ ...
- 更多的使用自定义元素(CustomElement)。
更多的使用自定义元素(CustomElement).
- 如何去除Office Excel的密码保护?
企图更改Excel文件内容,然而却弹出如下提示: 根据提示,我尝试解除保护表,却要求输入密码: 这就尴尬了=_=密码不是我设定的 问了度娘,找到了解决方案 将Excel文件扩展名更改为rar, 使用压 ...
- node封装mysql模块
node是基于异步的,因此在进行数据库查询操作的通常是通过回调来操作查询结果.但是在有了es7的async/await,基本不再需要回调了,所以本篇是基于async/await对mysql进行一次操作 ...
- js 时间戳精确值的问题
最近做一个多图上传的功能,通过name + 时间戳命名,结果发现时间戳竟然一样,一直以为是代码逻辑的问题,结果出错在时间戳的获取上了. 关于时间戳的获取方式: 1.Date.parse() var d ...