HDU4745 Two Rabbits(区间dp)
wsfw 卡在最后的答案统计了,看了别人的博客,觉得很有道理。
先破环成链,答案有两种情况:
1.在一段区间(最长为n)中的回文子序列:12321。两人站在l,r的位置开始行动
2.对于一个长度为n-1的序列来说,str[l-1]==str[r+1]
,所以有一种情况是两人站在l-1,r+1的位置开始行动。(说白了,l-1,r+1是同一个点,这种情况就是起点相同的情况。)
#include <bits/stdc++.h>using namespace std;
//-----pre_def----
const double PI = acos(-1.0);
const int INF = 0x3f3f3f3f;
typedef long long LL;
typedef unsigned long long ULL;
typedef pair<int, int> PII;
typedef pair<double, double> PDD;
#define fir(i, a, b) for (int i = (a); i <= (b); i++)
#define rif(i, a, b) for (int i = (a); i >= (b); i--)
#define endl '\n'
#define init_h memset(h, -1, sizeof h), idx = 0;
#define lowbit(x) x &(-x)//---------------
const int N = 2e3 + 10;
int n, d[N];
int f[N][N];
void init() {}
int main()
{#ifndef ONLINE_JUDGEfreopen("in.txt", "r", stdin);freopen("out.txt", "w", stdout);int StartTime = clock();
#endifwhile (scanf("%d", &n), n){fir(i, 1, n){scanf("%d", &d[i]), d[i + n] = d[i];}n <<= 1;memset(f, 0, sizeof f);fir(i, 1, n) f[i][i] = 1;int ans = 0;fir(len, 2, n){for (int l = 1; l + len - 1 <= n; l++){int r = l + len - 1;//f[l][r]if (d[l] == d[r]){f[l][r] = max(f[l][r], f[l + 1][r - 1] + 2);}else{f[l][r] = max({f[l][r], f[l + 1][r], f[l][r - 1]});}}}fir(i, 1, n / 2){ans = max({ans, f[i][i + n / 2 - 1], f[i][i + n / 2 - 2] + 1});}printf("%d\n", ans);}
#ifndef ONLINE_JUDGEprintf("Run_Time = %d ms\n", clock() - StartTime);
#endifreturn 0;
}
HDU4745 Two Rabbits(区间dp)相关推荐
- HDU 4745 Two Rabbits(区间dp)
这道题相对来说,我觉得就有点考查读题了 读题时一定要细心,大致就是要你求一个回文子序列,递推方程很简单 if(a[i]==a[j]) g[i][j]=max(g[i][j],g[i+1][j-1]+2 ...
- HDU4745 Two Rabbits【区间DP】
题目链接:HDU4745 Two Rabbits 题意:有一段环形字符串,两个人相对而行,要使得他们走过的字母序列相同的最长长度是多少:实际上就是求字符串中最长的回文子序列的长度,最终答案是取长度为n ...
- hdu4745区间dp处理环形
题目地址 注意这题并不是跳连续的区间,可以跨越,只是不能跨越已经走过的点. 根据题意,举个例子:2 1 1 2 4 5 9 8 9的答案应该是 7,为什么是7呢,我们发现在开头有一个回文串,2112, ...
- 0x53. 动态规划 - 区间DP(习题详解 × 8)
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 文章目录 0x53. 动态规划 - 区间DP Problem A. 最优矩阵链乘 Problem B. ...
- 动态规划 —— 区间 DP
[概述] 区间型动态规划,又称为合并类动态规划,是线性动态规划的扩展,它在分阶段地划分问题时,与阶段中元素出现的顺序和由前一阶段的区间中哪些元素合并而来有很大的关系. [思想] 区间 DP 实质上就是 ...
- POJ 2955 Brackets (区间DP)
题目链接:http://poj.org/problem?id=2955 Brackets Time Limit: 1000MS Memory Limit: 65536K Total Submiss ...
- UVA1626 括号序列 Brackets sequence(区间DP匹配括号,输出匹配方案)
整理的算法模板合集: ACM模板 UVA1626 Brackets sequence 我们将正规括号序列定义如下: 空序列是正规括号序列. 如果 SSS 是一个正规括号序列,那么 (S) 和 [S] ...
- UVA10003 切木棍 Cutting Sticks(区间DP、细节)
整理的算法模板合集: ACM模板 本题其实就是一个区间DP 的模板题,总长度为len,有n个切割点,也就是说能被切割成n+1段,所以左边界是0,有边界是n + 1,所以答案就是f[0][n + 1]. ...
- 【动态规划】区间DP - 最优矩阵链乘(另附POJ1651Multiplication Puzzle)
最优矩阵链乘(动态规划) 一个n∗mn*mn∗m的矩阵由 nnn 行 mmm 列共 n∗mn*mn∗m 排列而成.两个矩阵A和B可以相乘当且仅当A的列数等于B的行数.一个nm的矩阵乘mp的矩阵,运算量 ...
最新文章
- (亲测可行)ubuntu16.04+Opencv3.4.3+opencv_contrib3.4.3安装编译全过程
- springboot怎么替代jsp_如何在SpringBoot中使用JSP ?但强烈不推荐,果断改Themeleaf吧...
- 平时优化SQL的集合
- 数据结构:线性表(java实现)
- php 获取class id,CSS Class 與 CSS ID
- 小数在内存中的存储表示
- LeetCode 1278. 分割回文串 III(区间DP)
- 如何查阅资料?(找数据集,文献...)
- ORACLE使用数据泵导入导出部分表
- 论文编辑之目录和正文页码不同的设置
- resultset 的指针报错原因
- 只有程序员能看懂的十个笑话 2014-08-05 16:07 54人阅读 评论(0) 收藏...
- 第二节20181110
- 计算机应用基础题excel,计算机应用基础EXCEL练习题.doc
- 2021 Namomo Summer Camp Day2 图论(杜瑜皓)
- 成都哪所专科院校有计算机专业,成都哪些高职院校有计算机应用技术
- 一个光棍的呐喊!-太经典了
- 力扣(1053.115)补9.13
- 使用ChatGPT工具阅读文献的实战教程
- 开源STM32主控遥控器XBOX外形PCB