hdu 4745 区间dp
题意:求一个环的最长回文序列,是序列不是串
链接:点我
起点是可以任意的,
所以只要求出每个区间的最长回文序列之后取max(dp[1][i]+dp[i+1][n]),即可得最终答案
本来是想扩展两倍的,但是后来的最大不太好想
将 环倍增成链,求出窗口为n的最长子序列,但这不是最终的解,你可以试看看Sample 2,是只能得出4,因为它在选中的回文外面还可以选中一个当做起点来跳,所以外面得判断找出来的回文外面是否还有可以当起点的石头,即可以找窗口为(n- 1)的长度+1。所以解即找 窗口为n的长度或者 窗口为(n-1)的长度+1 的最大值。
不倍增,直接当成一个链求dp,然后把链切成两半,求出两边的回文长度,最大的和就是解。这里不用考虑起点问题,因为两边的回文中点都可以做起点。
Sample Input
1 1 4 1 1 2 1 6 2 1 1 2 1 3 0Sample Output
1 4 5 2015-05-06 代码
1 #include<cstdio> 2 #include<iostream> 3 #include<algorithm> 4 #include<cstring> 5 #include<cmath> 6 #include<queue> 7 #include<map> 8 using namespace std; 9 #define MOD 1000000007 10 const int INF=0x3f3f3f3f; 11 const double eps=1e-5; 12 typedef long long ll; 13 #define cl(a) memset(a,0,sizeof(a)) 14 #define ts printf("*****\n"); 15 const int MAXN=1005; 16 int n,m,tt; 17 int a[MAXN]; 18 int dp[MAXN][MAXN]; 19 int main() 20 { 21 int i,j,k; 22 #ifndef ONLINE_JUDGE 23 freopen("1.in","r",stdin); 24 #endif 25 while(scanf("%d",&n)!=EOF) 26 { 27 if(n==0) break; 28 cl(dp); 29 for(i=0;i<n;i++) 30 { 31 scanf("%d",&a[i]); 32 dp[i][i]=1; 33 } 34 for(int len=1;len<n;len++) 35 { 36 for(i=0;i+len<n;i++) 37 { 38 j=len+i; 39 if(a[i]==a[j]) dp[i][j]=dp[i+1][j-1]+2; 40 else dp[i][j]=max(dp[i][j-1],dp[i+1][j]); 41 } 42 } 43 int ans=0; 44 for(int i=0;i<n;i++) 45 ans=max(ans,dp[0][i]+dp[i+1][n-1]); 46 printf("%d\n",ans); 47 } 48 }
View Code
1 #include<cstdio> 2 #include<algorithm> 3 #include<cstring> 4 using namespace std; 5 int dp[1001][1001]; 6 int a[1001]; 7 int n; 8 int main() 9 { 10 while(scanf("%d",&n)&&n) 11 { 12 for(int i=1;i<=n;i++) 13 scanf("%d",&a[i]); 14 memset(dp,0,sizeof(dp)); 15 for(int i=1;i<=n;i++) 16 dp[i][i]=1; 17 for(int len=1;len<n;len++) { 18 for (int i=1;i+len<=n;i++) { 19 int j=i+len; 20 if(a[i]==a[j]) 21 dp[i][j]=dp[i+1][j-1]+2; 22 else 23 dp[i][j]=max(dp[i][j-1],dp[i+1][j]); 24 } 25 } 26 int ans=0; 27 for(int i=1;i<=n;i++) 28 ans=max(ans,dp[1][i]+dp[i+1][n]); 29 printf("%d\n",ans); 30 } 31 return 0; 32 }
转载于:https://www.cnblogs.com/cnblogs321114287/p/4265559.html
hdu 4745 区间dp相关推荐
- Palindrome subsequence HDU - 4632 区间dp|记忆化搜索
// 区间dp import java.util.Scanner;/**** @author CN*/ public class main {static int mod = 10007;static ...
- The 2014 ACM-ICPC BeiJing D - Dire Wolf HDU - 5115 区间dp
题意 n个狼 排成一排 我们要把一排狼都删除掉 删除一个狼的花费是这个狼的权值和左右两个狼的附加值 求最小花费 分析 考虑区间dp dp[i][j]表示i到j的最小花费 我们可以枚举其中的k 为序列中 ...
- hdu 2476 区间dp
题意: 给出两个串s1和s2,一次只能将一个区间刷一次,问最少几次能让s1=s2 例如zzzzzfzzzzz,长度为11,我们就将下标看做0~10 先将0~10刷一次,变成aaaaaaaaaaa 1~ ...
- You Are the One HDU - 4283 区间DP
https://cn.vjudge.net/problem/HDU-4283 题目大意n个人轮流上台,第i个人有一个屌丝值Di 当他为第k个上台的人时候会获得屌丝值(K-1)*Di, 这些人轮流上台, ...
- hdu 5115 区间dp 狼BUFF
题目大意:你是一个战士现在面对,一群狼,每只狼都有一定的主动攻击力和附带攻击力.你杀死一只狼.你会受到这只狼的(主动攻击力+旁边两只狼的附带攻击力)这么多伤害~现在问你如何选择杀狼的顺序使的杀完所有狼 ...
- HDU 5115 Dire Wolf 区间dp
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5115 Dire Wolf Time Limit: 5000/5000 MS (Java/Others ...
- HDU 5693 D Game 区间dp
D Game 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5693 Description 众所周知,度度熊喜欢的字符只有两个:B 和D. 今天,它 ...
- HDU 2476 String painter (区间DP)
题意:给出两个串a和b,一次只能将一个区间刷一次,问最少几次能让a=b 思路:首先考虑最坏的情况,就是先将一个空白字符串刷成b需要的次数,直接区间DP[i][j]表示i到j的最小次数. 再考虑把a变成 ...
- hdu 4597 + uva 10891(一类区间dp)
题目链接:http://vjudge.net/problem/viewProblem.action?id=19461 思路:一类经典的博弈类区间dp,我们令dp[l][r]表示玩家A从区间[l, r] ...
最新文章
- 二叉树的高度-递归-JS实现
- SharePoint Adventures : Using Claims with Reporting Services
- DDoS攻防战 (二) :CC攻击工具实现与防御理论
- 【SCOI2005】【BZOJ1087】互不侵犯King(状压dp)
- ​【文末有福利】《信条》中的物理学-时间机器存在吗?
- ie6+7+8等对background-color:rgba(),background-img渐变的兼容
- 中国电信披露2021年年报 天翼云营收实现三位数增长
- Connect By在10g中得增强, nocycle关键字等
- 开关电源磁性元件设计
- 专业音频测试软件应用比对,(精品文献)专业音频测试软件应用比对(升级版)_汤磊.pdf...
- Wi-Fi连接握手包抓包
- kettle连接access问题总结
- 在python中datetime使用中如何识别上月同期日期
- 抱歉,当前存在网络问题或服务器繁忙错误代码:20003问题解决方法
- JAVA学习内容汇总(一)
- element的el-table列标题添加自定义图标
- 二手行业能找回“消失的五年”吗?
- Python学习十四:访问列表元素、遍历列表
- 项目5 子域的加入、域的删除
- px4_simple_app
热门文章
- 【数据结构基础整理】图--06:克鲁斯卡尔算法详解
- mysql5.1 优化_7. 优化 - [ MySQL 5.1参考手册 ] - 在线原生手册 - php中文网
- 大学计算机基础模拟试题
- html a标签触发不了onclick()事件
- vue-router 源码和动态路由权限分配
- 茴字的四种写法—移动适配方案的进化
- 我看“暴风影音”事件
- DDD话语评价之二:“值对象”是DDD的创新吗(上)
- HLS ARRAY_PARTITION
- 嵌入式开发常用英语单词--你知多少?