HDU 4753 Two Rabbits(区间DP)
来源:互联网 发布:手机淘宝怎么搜索达人 编辑:程序博客网 时间:2024/04/28 19:06
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4745
这个题目比赛时没出,对不起队友!
其实就是求最长回文子系列,最后枚举一个兔子的出发点就可以了,另一个兔子在左边的回文子系列的中心
接下来就是求回文子系列的长度dp[i][j]表示串从i到j的最长回文字系列的长度
#include <string.h>#include <algorithm>#include <stdio.h>#include <iostream>using namespace std;#define maxn 1005int n,rec[maxn];int dp[maxn][maxn];#define MAX(a,b) (a>b?a:b)int Dp(){ int i,j,k,a,b,c,ans=0; for(i=0;i<n;i++) dp[i][i]=1; for(i=1;i<n;i++) for(j=0;j<n && i+j<n;j++){ if(i==1){ if(rec[j]==rec[i+j]) dp[j][i+j]=2; else dp[j][i+j]=1; continue; } dp[j][i+j]=MAX(dp[j][i+j-1],dp[j+1][j+i]); if(rec[j]==rec[i+j]) dp[j][i+j]=MAX(dp[j][i+j],dp[j+1][i+j-1]+2); } for(i=0;i<n;i++) ans=MAX(dp[0][i]+dp[i+1][n-1],ans); printf("%d\n",ans); return 0;}int main(){ int i,j,k; while(scanf("%d",&n),n){ for(i=0;i<n;i++) scanf("%d",&rec[i]); Dp(); } return 0;}
- HDU 4753 Two Rabbits(区间DP)
- HDU 4745 Two Rabbits(区间DP)
- HDU 4745 Two Rabbits (区间DP)
- 区间dp-hdu-4745-Two Rabbits
- HDU 4745 Two Rabbits (区间DP)
- HDU 4745 Two Rabbits 区间dp
- HDU 4745 Two Rabbits 区间DP
- HDU4745:Two Rabbits(区间DP)
- HDU4745 Two Rabbits(区间dp)
- HDU 4745 Two Rabbits(区间DP,最长非连续回文子串)
- hdu4745 Two Rabbits(区间dp,回文串思想)
- HUD 4745 Two Rabbits (区间DP)
- hdu 4745 Two Rabbits(带思维的DP)
- HDU 4745 Two Rabbits(非连续最长回文子序列,区间DP)
- HDU 4745 Two Rabbits【非连续最长回文子序列,区间DP】
- HDU 4745-Two Rabbits(最长非连续回文串,区间DP)
- HDU 4745 Two Rabbits【非连续最长回文子序列,区间DP】
- hdu4745——Two Rabbits(区间dp,最长回文子序列)
- 直接拿来用!超实用的Java数组技巧攻略
- 求解1-n之间的素数
- Android 对话框(Dialog)大全 建立你自己的对话框
- 一个异或加密方案--C语言实现
- 在Windows下利用PowerShell脚本定时删除过期文件
- HDU 4753 Two Rabbits(区间DP)
- sql上一个月和下一个月
- MSP430单片机学习前必须知道的
- MFC: 右键弹出菜单-->选取菜单弹出窗口
- Union all 连接2个SQL语句
- 大四的秋天,随便写写
- vua 10189 Minesweeper
- mianshiti
- ZOJ 1001 A + B Problem