
Dynamic Programming
StableCatsith
这个作者很懒,什么都没留下…
展开
-
SDUT 1730 - 数字三角形问题
小白动态规划里的例题. 先用原创 2014-05-02 22:40:44 · 1145 阅读 · 0 评论 -
Vijos P1250 - 最勇敢的机器人
思路 用并查集,然后分组背包。 背包九讲造福人类。 分组背包和一般的背包差不多,就是把一组作为一个点考虑。 在如何把它们集中到一组想了很久,后来还是暴力了。先把它们都分好,然后扫描一遍根节点,把相同根节点的都存到一个数组里,然后遍历一遍数组。 代码 #include #include #include #include #include #inclu原创 2014-08-28 20:39:30 · 1080 阅读 · 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 · 1796 阅读 · 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 · 1049 阅读 · 0 评论 -
SDUT 2171 - 上升子序列
传送门SDUT 2171 - 上升子序列 做的第一个DP问题. 觉得处理的方法很奇妙... 每次探索一个新的领域, 都会有种感慨: 这TM都是谁想出来的(╯‵□′)╯ ┴─┴ 越来越觉得算法的神奇. 这题要从以一个数结尾的情况考虑最大递增子序列. 状态dp[i]表示以i结尾的递增子序列的和。 状态转移方程dp[i] = max(dp[j]) + data[i]原创 2014-04-05 20:12:46 · 1171 阅读 · 0 评论 -
UVa 10827 - Maximum sum on a torus
传送门UVa 10827 - Maximum sum on a torus 题意:给一个可以滚动的原创 2014-06-17 21:07:28 · 963 阅读 · 0 评论 -
UVa 108 - Maximum Sum
传送门UVa 108 - Maximum Sum 题意:计算子矩阵的最大和。 没思路,参考了GooMaple的解题报告。原创 2014-06-16 18:32:50 · 889 阅读 · 0 评论 -
UVa 507 - Jill Rides Again
传送门UVa 507 - Jill Rides Again 题意:求最大子序列。 明明是动态规划的题目,竟然放到这个专题。。。原创 2014-06-15 22:05:52 · 795 阅读 · 0 评论 -
HDU 1003 - Max Sum
传送门HDU 1003 - Max Sum 说好休息几天的。。但是一天不写手就痒了。。。原创 2014-05-30 20:51:01 · 740 阅读 · 0 评论 -
NYOJ 16 - 矩形嵌套
传送门NYOJ 16 - 矩形嵌套 小白上的例题,但是LRJ说原创 2014-06-27 11:39:18 · 1064 阅读 · 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 · 933 阅读 · 0 评论