Dynamic Programming
StableCatsith
这个作者很懒,什么都没留下…
展开
-
SDUT 1730 - 数字三角形问题
小白动态规划里的例题.先用原创 2014-05-02 22:40:44 · 1102 阅读 · 0 评论 -
Vijos P1250 - 最勇敢的机器人
思路用并查集,然后分组背包。背包九讲造福人类。分组背包和一般的背包差不多,就是把一组作为一个点考虑。在如何把它们集中到一组想了很久,后来还是暴力了。先把它们都分好,然后扫描一遍根节点,把相同根节点的都存到一个数组里,然后遍历一遍数组。代码#include #include #include #include #include #inclu原创 2014-08-28 20:39:30 · 1050 阅读 · 0 评论 -
Vijos P1159 - 岳麓山上打水
思路了解了一下迭代加深搜索(DFSID),就是枚举下限的DFS。枚举种类,然后依次判断。代码#include bits/stdc++.h>#define LL long longusing namespace std;const int VMAXN = 2e4 + 10;const int TMAXN = 100 + 10;const int INF =原创 2014-08-21 19:53:10 · 1762 阅读 · 0 评论 -
Vijos P1153 - 猫狗大战
题意把给定的数分成两部分,最多只能相差1个,使得他们的差最小。思路记得在UVa上有一题,分成两部分使得差最小,那直接对sum的一半进行背包即可,这题算是那题的升级版吧。用dp[i][j][k]表示前i个选j个能否到达k,数据太大,滚一下。代码#include using namespace std;#define LL long long#defi原创 2014-08-19 21:02:02 · 1009 阅读 · 0 评论 -
SDUT 2171 - 上升子序列
传送门SDUT 2171 - 上升子序列做的第一个DP问题.觉得处理的方法很奇妙...每次探索一个新的领域, 都会有种感慨: 这TM都是谁想出来的(╯‵□′)╯ ┴─┴ 越来越觉得算法的神奇.这题要从以一个数结尾的情况考虑最大递增子序列.状态dp[i]表示以i结尾的递增子序列的和。状态转移方程dp[i] = max(dp[j]) + data[i]原创 2014-04-05 20:12:46 · 1136 阅读 · 0 评论 -
UVa 10827 - Maximum sum on a torus
传送门UVa 10827 - Maximum sum on a torus题意:给一个可以滚动的原创 2014-06-17 21:07:28 · 937 阅读 · 0 评论 -
UVa 108 - Maximum Sum
传送门UVa 108 - Maximum Sum题意:计算子矩阵的最大和。没思路,参考了GooMaple的解题报告。原创 2014-06-16 18:32:50 · 853 阅读 · 0 评论 -
UVa 507 - Jill Rides Again
传送门UVa 507 - Jill Rides Again题意:求最大子序列。明明是动态规划的题目,竟然放到这个专题。。。原创 2014-06-15 22:05:52 · 756 阅读 · 0 评论 -
HDU 1003 - Max Sum
传送门HDU 1003 - Max Sum说好休息几天的。。但是一天不写手就痒了。。。原创 2014-05-30 20:51:01 · 713 阅读 · 0 评论 -
NYOJ 16 - 矩形嵌套
传送门NYOJ 16 - 矩形嵌套小白上的例题,但是LRJ说原创 2014-06-27 11:39:18 · 1031 阅读 · 0 评论 -
Vijos - P1071 新年趣事之打牌
思路先用背包求出能否凑成left,还要一边记录路径。然后递归打印路径即可。二维数组开不下,滚一下就行。代码#include using namespace std;#define LL long long#define MP(a, b) make_pair(a, b)const int MAXN = 100000 + 10;const int INF原创 2014-08-19 17:54:04 · 901 阅读 · 0 评论