hdu4745
区间DP,这类题目还是非常常见的,可惜平时都不怎么在意。一到比赛就弱得像鸟一样,真心囧。
题目要求很简单,就是一个最长的回文子序列,输出该子序列的长度。
区间DP,最常用的一种策略(类似于数学归纳法):
- 令dp[i][j](j>=i)表示从i到j的一些目标状态
- 对于任意的x(x>=k),dp[k][x]若已知(k=i-1或者i+1,根据题意需要,确定向上k=i-1或者向下k=i+1)。
- dp[i][i]状态非常特殊,一般已知(像2中所述,那么初始状态可能是dp[1][1]或者dp[n][n])。
- 根据以上,2中以向下为例,(j>i) dp[i][j]=f(dp[i+1][j],dp[i][j-1]) 或者dp[i][j]=g(dp[i+1][j-1])。
区间DP,通常的答案是dp[1][n]。
这道题就是很明显的一道向下的区间DP。唯一有些不一样的是,这道题要求是环状的,所以结果是需要环拼接的,代码描述:
ans = max(ans,dp[1][i-1]+dp[i][n]), 其中dp[1][i-1]+dp[i][n]可以另外看成dp[i][n]+dp[1][i-1]。
希望读者细细品味,有一些想法溢于言表。
代码我就不写了,引一处我个人觉得Very Nice的代码:http://www.cnblogs.com/zjbztianya/archive/2013/09/17/3326296.html
hdu4745的更多相关文章
- HDU4745 - Two Rabbits(区间DP)
题目大意 给出一个长度为n的环状序列,两只兔子各自从一个点出发,一个顺时针跳,一个逆时针跳,每个时刻都要求两只兔子所在的数字是相同的,兔子最多跳一个圈~~~问兔子们最多能跳多少次 题解 一个逆时针跳, ...
- HDU4745——Two Rabbits——2013 ACM/ICPC Asia Regional Hangzhou Online
这个题目虽然在比赛的时候苦思无果,但是赛后再做就真的是个水题,赤果果的水题. 题目的意思是给n个数构成的环,两只兔子从任一点开始分别顺逆时针跳,每次可以调到任意一个数(最多不会跳过一圈). 求最多能跳 ...
- 算法复习——区间dp
感觉对区间dp也不好说些什么直接照搬讲义了2333 例题: 1.引水入城(洛谷1514) 这道题先开始看不出来到底和区间dp有什么卵关系···· 首先肯定是bfs暴力判一判可以覆盖到哪些城市····无 ...
随机推荐
- css渐变/背景
1.线性渐变(gradient变化) linear-gradient线性渐变指沿着某条直线朝一个方向产生渐变效果. 上图是从黄色渐变到绿色 background:linear-gradient( to ...
- asp.net生成缩略图、文字图片水印
/// <summary> /// 会产生graphics异常的PixelFormat /// </summary> private static PixelFormat[] ...
- hive 函数学习
NAME PRICE ---- ----- AAA 1.59 AAA 2.00 AAA 0.75 BBB 3.48 BBB 2.19 BBB 0.99 BBB 2.50 I would like to ...
- 对 PInvoke 函数“WinVideo!WinVideo.webcam::SendMessage”的调用导致堆栈不对称
从.NET1.1升级到.NET2.0时出现的PInvokeStackImbalance错误微软官方的解释 (http://msdn2.microsoft.com/zh-cn/library/0htdy ...
- 获取自动增长IDmysqli函数
<?php $mysqli=@new mysqli("localhost", "root", "123456", "xsph ...
- SurfaceView绘图机制
一.为什么需要用SurfaceView绘图,不直接继承View绘图 它的特性是:可以在主线程之外的线程中向屏幕绘图上.这样可以避免画图任务繁重的时候造成主线程阻塞,从而提高了程序的反应速度.在游戏开发 ...
- Python:staticmethod vs classmethod
Being educated under Java background, static method and class method are the same thing. But not so ...
- Javascript 之内置对象
JS提供了11种引用类型:Object.Array.Date.Function.Error.RegExp.Math.Number.String.Boolean.Globle.其中包括了三种基本包装类型 ...
- 启用 ASP.NET MVC 项目的 Edit and Continue
VS 的 Edit and Continue 功能允许你在 Debug 的过程中,修改代码并且编译运行修改后的代码.对于编程阶段非常的好用,不需要你停止正在进行的 Debug,修改代码然后运行代码. ...
- 论山寨手机与Android 【13】SmartPhone AP系统
在第9章中我们提到,从功能上讲对于智能手机的一个粗略的概括是,智能手机 == 电脑 + 移动网卡,或者更准确地说,智能手机的硬件结构分为应用程序处理器AP,和基带处理器BP两个部分.这里隐含着两个问题 ...