[题目链接]:http://codeforces.com/problemset/problem/505/C [题意] 一开始你跳一步长度为d; 之后你每步能跳d-1,d,d+1这3种步数; 然后在路上有很多个位置有treasure; 问你,你最多能获得多少个treasure; 最远跳到30000 [题解] 记忆化搜索; 设dp[x][y]表示跳到第x个位置了; 然后前一步跳的步数为d+y能够获得的最多treasure个数; 这里y能够为负值;且d+y>0; 这里用和d的差值作为第二维是因为; 1…
题目链接: C. Mr. Kitayuta, the Treasure Hunter time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output The Shuseki Islands are an archipelago of 30001 small islands in the Yutampo Sea. The islands are…
[题目链接]:http://codeforces.com/problemset/problem/505/D [题意] 让你构造一张有向图; n个点; 以及所要求的m对联通关系(xi,yi) 即要求这张有向图中的点xi能够联通到点yi; 问你最少需要添加多少条边才够; [题解] 先将输入的m条边; 当成无向边,构成一张无向图; 然后对于构成这张图的各个联通块; 设len为这个联通块的节点个数; 如果这个联通块它对应的有向图内有环; 则这个联通块需要len条有向边; (即这len个节点首尾相连构成一…
神题……胡乱讲述一下思维过程……首先,读懂题.然后,转化问题为构造一个长度为|T|+n的字符串,使其内含有T这个子序列.之后,想到一个简单的dp.由于是回文串,我们就增量构造半个回文串,设f(i,j,k)为构造到第i个位置,从前往后匹配到j,从后往前匹配到k,这样O(m*m*n)(没有观察到其转移的性质会再乘个26).再然后,发现不妙,在最后讨论奇偶.(我的思路到此为止……)接着,观察其转移的实质,发现其实dp的过程就是在一个有限状态自动机上行走,而有限状态自动机上的状态就是目前剩下的T,所以我…
A. Mr. Kitayuta, the Treasure Hunter time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output The Shuseki Islands are an archipelago of 30001 small islands in the Yutampo Sea. The islands are evenly…
Description The Shuseki Islands are an archipelago of 30001 small islands in the Yutampo Sea. The islands are evenly spaced along a line, numbered from 0 to 30000 from the west to the east. These islands are known to contain many treasures. There are…
[题目链接]:http://codeforces.com/problemset/problem/255/D [题意] 给你一个n*n的方框; 给你一个方块;(以下说的方块都是单位方块) 每一秒钟,可以沿着当前有方块的地方往4个方向扩展一个方块; 问你最少要多少秒钟,平面上会有c个方块; [题解] 画几张图可以发现,图形都是类似一个十字架的几何图案; 设a[n]表示第n-1秒时有多少个方块; 则有a[n] = a[n-1]+n*4 (a[1]=1) 递推一下能求出 a[n] = 2∗n 2 −2∗…
题目链接:http://codeforces.com/problemset/problem/505/C 题意: 有n个宝石,分别在位置p[i].(1 <= n,p[i] <= 30000) 初始时你在位置0,第一次走可以往前跳d的距离. 从第二次跳开始,如果前一次跳的距离是x,这一次跳的距离只能是x-1,x,x+1中的一种. 没每跳到一个地方,会获得那里的所有宝石. 问你最多能拿到多少宝石. 题解: 表示状态: dp[i][j] = max gems 表示初始在位置i,上一次跳的距离为j,在这…
题目链接:CF#286 - A 这场CF就这样爆零了...我真是太蒟蒻了... 题目分析 比赛的时候看到A题就发现不会,之后一直也没想出来,于是就弃了,还好不提交也不掉Rating... 比赛后看评论,看到有人说“I could not even solve the problem A, shame on me.” ,立刻就感觉到我是多么的蒟蒻... 看了评论中有人发的题解,就一句 “Normal DP”,再看了他的简单的解释,这才恍然大悟... 这道题就可以使用普通的DP,用 f[i][j]…
题意:有30001个岛,在一条线上,从左到右编号一次为0到30000.某些岛屿上有些宝石.初始的时候有个人在岛屿0,他将跳到岛屿d,他跳跃的距离为d.如果当前他跳跃的距离为L,他下一次跳跃的距离只能为L-1,L,L+1之一且不能为0.他只能往编号更大的岛跳,直到他不能跳,问他最多能收集多少个宝石? 思路:用dp[i][j]表示在第i个岛,上一步跳的距离为j的收集到的最多宝石的个数.这样如果直接表示的话,j最大可能是30000,空间会超,但是所跳跃的距离不会超过d+250, 因为额1+2+3+..…