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暴力判一判可以覆盖到哪些城市····无 ...
随机推荐
- Android核心基础(五)
1.仿网易新闻客户端 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xml ...
- [tarjan] poj 1236 Network of Schools
主题链接: http://poj.org/problem?id=1236 Network of Schools Time Limit: 1000MS Memory Limit: 10000K To ...
- URAL 1736 Chinese Hockey 网络流+建图
题目链接:点击打开链接 题意: 给定n个队伍的得分情况,输出随意一个可行解. n个队伍随意2个队伍 a, b 间有且仅有一场比赛. 比赛结果分4种: 1.a +3, b +0 2.a +0, b +3 ...
- Hadoop书籍下载链接
Hadoop书籍推荐1:Hadoop实战(结合经典案例全面讲解hadoop整个技术体系)http://www.db2china.net/club/thread-25148-1-1.html2:Hado ...
- javascript 兼容各个浏览器的事件
- 关于offsetTop offsetHeight clientHeight scrollHeight scrollTop的区别研究
我是以chrome浏览器做的研究. 先看一段代码: <script> window.addEventListener('DOMContentLoaded',function(){ var ...
- UVA 1343 The Rotation Game
题意: 给出图,往A-H方向旋转,使中间8个格子数字相同.要求旋转次数最少,操作序列字典序尽量小. 分析: 用一维数组存24个方格.二维数组代表每个方向对应的7个方格.IDA*剪枝是当8-8个方格中重 ...
- asp.net mvc 生成条形码
using System; using System.Collections; using System.Collections.Generic; using System.Drawing; usin ...
- Ubuntu 13.10 下安装node
1.首先更新Ubuntu在线包:sudo apt-get update && sudo apt-get dist-upgrade, 2.默认Ubuntu已经安装python的,具体版本 ...
- Windows下的窗口程序
再进一步. . .model flat,stdcall option casemap:none include Windows.inc include user32.inc includelib us ...