巧妙的并查集。对于 i,j,k 可以表示 d[j] - d[i-1]= k;若i,j有公共祖先 则可以求出 分别到 祖先的距离,差值就是答案。#include#include#include#include#include#include#include#include#include#includ...
分类:
其他好文 时间:
2014-07-16 18:33:17
阅读次数:
164
链接:http://www.rqnoj.cn/problem/87思路:动态规划 定义f[i][j]表示到达第 i 块给定石头用了 j 块添加石头的最少步数。 转移方程:f[i][j]=min{f[k][j-tmp[pos[i]-pos[k]]+1]+tmp[pos[i]-pos[k]]...
分类:
其他好文 时间:
2014-07-13 23:54:14
阅读次数:
404
http://www.rqnoj.cn/problem/601今天发现最小区间覆盖竟然是贪心,不用DP!于是我又找到这题出来撸了一发。要找到最上面每个城市分别能覆盖最下面哪些城市,如果最下面有城市怎么都覆盖不到,就输出覆盖不到的城市数。这样,最上面的城市能覆盖的最下面的城市一定是一个区间,不会从中间...
分类:
其他好文 时间:
2014-05-27 18:32:38
阅读次数:
397
原题地址:http://www.rqnoj.cn/problem/82解题思路:
简单的动态规划 状态表示:DP[i][0]表示当前在第i层,且当前跳跃状态不可用,此时消耗的最短时间。
DP[i][1]表示当前在第i层,且当前跳跃状态可用,此时消耗的最短时间。 状态转移方程: ...
分类:
其他好文 时间:
2014-05-09 10:15:50
阅读次数:
286
原题地址:http://www.rqnoj.cn/problem/69解题思路:
用DP[i][j]表示到达(i,j)点的路径数,则DP[0][0]=1DP[i][j]=DP[i-1][j]+DP[i][j-1](不是马的控制点和马的当前位置)DP[i][j]=0(马的位置和马的控制点)代码:
1....
分类:
其他好文 时间:
2014-05-09 10:02:50
阅读次数:
421
原题地址:http://www.rqnoj.cn/problem/90解题思路:题目看起来不太像动态规划。。。我用一个数组f[i][j]来表示在数组第i个元素的后面第一次出现j的位置,为-1则是没出现过。然后每次查找最大的位置即可。如题目例子中:f
1 3 5 2 4 1 3 5 2 2 2 2.....
分类:
其他好文 时间:
2014-05-05 09:55:18
阅读次数:
448
原题地址:http://www.rqnoj.cn/problem/2解题思路:背包问题。状态转移方程:DP[i][j]=max(DP[i-v[j]][j-1]+p[j]*v[j],DP[i][j-1])DP[i][j]表示最多话费i的钱,购买前j+1个物品所能达到的最大价值。解题代码:
1 #inc...
分类:
其他好文 时间:
2014-04-27 21:26:22
阅读次数:
537