摘要: 题目描述总结1. 这种状态转移的题目不太好 debug, 写起来总觉得不对劲2. 动规的初始化总能找到一些简练的初始化方法, 比如这道题, 可以选择 j>=0, dp[0] = 1, 或者对 vector 中的所有元素赋值 dp[s] = 1, 然后 j > 0代码 TLE 了/* * source.cpp * * Created on: Apr 6, 2014 * Author: sangs */#include #include #include #include #include #include #include using namespace std;int arr[10 阅读全文
posted @ 2014-04-06 23:10 周卓 阅读(173) 评论(0) 推荐(0) 编辑
摘要: 题目描述总结1. 编程之美讲了剪枝解法, 这里给出动规解法2. dp[i][j]%n = j. dp[i][j] 是 mod n 余 j 的最小值代码/* * source.cpp * * Created on: Apr 6, 2014 * Author: sangs */#include #include #include #include #include using namespace std;typedef unsigned long long LL;LL dp[200][500];LL cal(int n) { LL lastModed = 1; LL expr10 = ... 阅读全文
posted @ 2014-04-06 20:42 周卓 阅读(262) 评论(0) 推荐(0) 编辑
摘要: 题目描述总结1. 枚举 i 是未被取到的价值最小的酒, 那么 0~i-1 都取到了, 对 i+1~end 运行 01 背包代码 有些极端 case 没考虑到/* * source.cpp * * Created on: Apr 6, 2014 * Author: sangs */#include #include #include #include #include #include using namespace std;int arr[100];int dp[2000];int cal(int n, int target) { int res = 0; int sum = 0;... 阅读全文
posted @ 2014-04-06 19:25 周卓 阅读(180) 评论(0) 推荐(0) 编辑
摘要: 题目描述总结1. 完全背包框架都想了半天2. 我随机取了个背包的上限, 超时了代码 超时/* * source.cpp * * Created on: Apr 6, 2014 * Author: sangs */#include #include #include #include #include using namespace std;const int INF = 0X3F3F3F3F;const int MAXMONEY = 50000;int val[2000];int num[2000];int dp[MAXMONEY+100];void firstPass(int n... 阅读全文
posted @ 2014-04-06 16:14 周卓 阅读(136) 评论(0) 推荐(0) 编辑
摘要: 题目描述总结1. 偏移的设置又思考了很久, 实际上, 枚举几个例子就能把思路找出来2. dp[i][j], 循环的最外两层循环分别是 i, j3. 初始化问题, dp[i][j] 初始化成 0 更好, 下面的代码写的很丑, 就是因为初始化没搞好. 做题时若实在拿捏不准到底初始化成 0, 1 还是 INF, 那就都试试代码/* * source.cpp * * Created on: Apr 5, 2014 * Author: sangs */#include #include #include #include #include using namespace std;const ... 阅读全文
posted @ 2014-04-06 15:22 周卓 阅读(129) 评论(0) 推荐(0) 编辑