杭州网赛 two rabbits (hdu 4745)
算法很简单,问题是,怎么证明,答案是回文序列.
设a,b走的序列按顺时针是:
a1 , a2 , a3 , ... , ak
b1 , b2 , b3 , ... , bk
考虑端点的2种情况:
1. a1 b1 ... bk ak
2. a1 b1 ... ak bk
对于第一种, 将b1,bk移动到a1,ak ,不会让答案变小, 于是这种情况下的答案为 [i,i+n-1]区间的回文序列长度
对于情况2, bk对应的下标如果小于a1,那么同样可以进行情况1的操作, 如果 bk的下标>a1那么
a,b都在两个不想交的区间移动,并且两个区间的总长小于n, 于是答案仍然为 [i,i+n-1]区间的回文序列长度;
如果bk == a1, 是a,b是从同一个点出发的情况, 答案 为 [i,i+n]区间的回文序列长度-1, 因为起点算了多次,要减1.
#include <map>
#include <queue>
#include <ctime>
#include <vector>
#include <cstdio>
#include <string>
#include <cstring>
#include <algorithm>
using namespace std;
typedef long long llong;
#define ls ((l+r)<<1)
#define rs (((l+r)<<1)+1)
#define mid ((l+r)>>1)
#define maxn 2010 int n,a[maxn],f[maxn][maxn]; int getvar(int l,int r)
{
if (l>r) return ;
if (l==r) return f[l][r] = ;
if (f[l][r] != -) return f[l][r];
int res = ;
if (a[l]==a[r]) res = getvar(l+,r-)+;
res = max(res,getvar(l+,r));
res = max(res,getvar(l,r-));
return f[l][r] = res;
} int main()
{
freopen("test.txt","r",stdin);
while (scanf("%d",&n))
{
if (!n) break;
for (int i= ; i<=n ; i++ ) scanf("%d",&a[i]);
for (int i= ; i<=n ; i++ ) a[i+n] = a[i];
int ans = ;
memset(f,-,sizeof(f));
for (int i= ; i<=n ; i++ )
{
int tmp = getvar(i,i+n-);
ans = max(ans,tmp);
tmp = getvar(i,i+n) - ;
ans = max(ans,tmp);
}
printf("%d\n",ans);
}
return ;
}
杭州网赛 two rabbits (hdu 4745)的更多相关文章
- 2013杭州网赛 1001 hdu 4738 Caocao's Bridges(双连通分量割边/桥)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4738 题意:有n座岛和m条桥,每条桥上有w个兵守着,现在要派不少于守桥的士兵数的人去炸桥,只能炸一条桥 ...
- HDU 4746 HDOJ Mophues 2013杭州网赛I题
比赛的时候就预感到这题能出,但是会耗时比较多.结果最后是出了,但是有更简单的题没出. 是不是错误的决策呢?谁知道呢 题目意思: 定义f(x) = x分解质因数出来的因子个数 如 x = p0 * p0 ...
- 2013成都网赛 G(x) (HDU 4733)
G(x) 思路: 首先搞清楚每个位置上的值有什么意义, 如果第i位的值为1则 第i位与第i+1位不同,反之相同. 然后考虑s1和s2为什么会不一样, 这是由于x+1后比特位进位导致的,于是得出一个性质 ...
- HDU4738【杭州网赛、判桥】
刚拿到这道题时挺有思路,无奈平日里只敲过找割顶的代码,判桥的代码当时自己也没仔细敲. 当时一把泪啊,忽然感觉自己的图论才只是刚搞了个起步啊.. 题目有神坑. 就是先判是否连通,不连通直接输出0; ...
- hdu4740【杭州网赛、模拟、有点搜索?】
当时看了这题就感觉so easy... 本来不想写的,后来感觉是不是可以练一下搜索水平.. 比赛时有人过了就没写. 比赛完了写一下. 实现还不是那么顺利, 囧 本来自己以为这题能练下搜 ...
- 2013杭州网络赛D题HDU 4741(计算几何 解三元一次方程组)
Save Labman No.004 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Other ...
- 2013杭州网络赛C题HDU 4640(模拟)
The Donkey of Gui Zhou Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/O ...
- ZOJ Bizarre Routine 2013杭州网赛B题
题目意思: 给定n, expect, a, b 要求你构造一组array[],存放一个1..n的排列,使的下面的程序能输出YES 题目所示代码: bool less_than(x, y) { T++; ...
- HDU 4745 Two Rabbits (2013杭州网络赛1008,最长回文子串)
Two Rabbits Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)Tota ...
随机推荐
- github atom 试用
github的编辑器atom 1.0已经出来了,在https://atom.io/ 我之前在win上一直用notepad++写了两年脚本.最近改写lua了,项目组统一用的sublime text.su ...
- html5 手机APP计算高度问题
安卓手机型号比较多,会出现bottom:0 找不到底部的问题,所以需要计算手机可视区域高度,这样便于使用百分比适配 (function(window,undefined){ /** * js_heig ...
- php中strstr、strrchr、substr、stristr四个函数的区别总结
php中strstr.strrchr.substr.stristr四个函数的区别总结 投稿:junjie 字体:[增加 减小] 类型:转载 时间:2014-09-22我要评论 这篇文章主要介绍了php ...
- Perl 多线程模块 Parallel::ForkManager
Perl 多线程模块 Parallel::ForkManager 一个简单的并行处理模块.这个是用来对付循环的多线程处理. 放在循环前面. Table of Contents 1 Synops内容简介 ...
- HR系统+人脸识别
近期一直在写一套HR系统,这套HR系统和人脸识别相结合.全然杜绝取代刷卡的情况产生.系统的灵活性比較强,开发简洁高速. 例如以下是一些功能上的截图 考勤模块仅仅是列举当中一个请假申请的功能做为展示 ...
- mysql 5.6 设置慢查询
mysql 5.6 开启慢查询日志 slow_query_log = on #开启慢查询 1 或者 on long_query_time = 3 #记录超过的时间,单位是秒,默认是10s slow_q ...
- DEV PivotGridControl 全选行或列
foreach (string item in fieldProductName.FilterValues.Values) { pivotGridControl.Cells.SetSelectionB ...
- 用web技术开发出原生的App应用的体会(1)
本人是是个前端小白,学前端已经有半年的时间了,前几天开了个博客,希望记录自己学习历程的点滴. 今天要写的是关于用html,css,javascript等web技术开发原生的app应用. 总所周知,we ...
- vs2012快捷键失效解决办法
快速解决vs开发工具快捷键失效,看图
- 先装Net Framework 后 装 IIS的处理办法
先装IIS话,后面装Net Framework时候会自动注册 处理aspx和ashx等的处理扩展程序 先装Net Framework 后 装 IIS.扩展程序注册在命令:aspnet_regiis - ...