摘要: http://poj.org/problem?id=2029二维树状数组解法:http://www.cnblogs.com/E-star/archive/2012/07/30/2615239.html题意:给定一个W*H的矩形方格,然后给出n个柿子树所在矩形小方格的坐标,然后给你一个dx*dy的小矩形,求用此小矩形能够框住的最多的柿子树的个数;思路:dp[i][j] 存储从[0,0]到[i,j]的和,然后暴力枚举即可:View Code #include <cstdio>#include <iostream>#include <cstring>#includ 阅读全文
posted @ 2012-08-12 19:51 E_star 阅读(167) 评论(0) 推荐(0) 编辑
摘要: http://poj.org/problem?id=3280题意:给定一个长度为m的字符串(都是小写字母) ,求通过添加或者删减若干个字符是原字符串变为回文串的最小代价(这里给出n个字符的删除与添加所需的代价,规定添加和删除的字符串都在给定的这n个字符中);思路:只能说自己dp太弱了,以后有时间一定要多练习dp。这里对字符串从两端开始进行比较如果相同则dp[i][j] = dp[i + 1][j - 1],如果不同则dp[i][j] = min(dp[i + 1][j] + min(addv[str[i] -'a'],delv[str[i] - 'a']),dp 阅读全文
posted @ 2012-08-12 16:54 E_star 阅读(174) 评论(0) 推荐(0) 编辑
摘要: http://poj.org/problem?id=1054题意:给你r*c的一块稻田,每个点都种有水稻,青蛙们晚上会从水稻地里穿过并留下脚印,问题确保青蛙的每次跳跃的长度想相同,而且沿直线行走,给出n个青蛙的脚印点问存在大于等于3的最大青蛙走的连续的脚印个数;若不存在输出0思路:这题O(n^3)的三次方+j剪枝竟然能过无语了。。。。首先排序,然后O(n^2)枚举任意两点找直线,O(n^2)判断同一直线并且是同一青蛙留下的脚印然后求最大值。剪枝:1:青蛙的起点肯定在稻田外;2:该点的直线上的脚印一定要大于上一次的点数;3:多余上一点的基础上点要在稻田内;View Code #include & 阅读全文
posted @ 2012-08-12 14:35 E_star 阅读(312) 评论(0) 推荐(0) 编辑
摘要: http://poj.org/problem?id=1191题意:中文省略.思路:黑说p116有讲解,主要的状态转移方程为横着切:dp[k][x1][y1][x2][y2] = min(dp[k - 1][x1][y1][mid][y2] + dp[1][mid][y1][x2][y2],dp[k - 1][mid][y1][x2][y2] + dp[1][x1][y1][mid][y2]); x1 + 1 <= mid < x2竖着切:dp[k][x1][y1][x2][y2] = min(dp[k - 1][x1][y1][x2][mid] + dp[1][x1][mid][x 阅读全文
posted @ 2012-08-12 09:55 E_star 阅读(245) 评论(0) 推荐(0) 编辑