上一页 1 ··· 5 6 7 8 9 10 11 12 13 下一页
摘要: 题目描述总结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) 编辑
摘要: DescriptionSummary:1. Fill dp array explicitly by using dp[i] = dp[i+1]2. At time i, do the first job explicitlyCode:/* * source.cpp * * Created on: Apr 5, 2014 * Author: sangs */#include #include #include #include #include using namespace std;class Job {public: int st, ed, duration; Job(int _... 阅读全文
posted @ 2014-04-05 22:28 周卓 阅读(204) 评论(0) 推荐(0) 编辑
摘要: 题目描述总结1. 两遍 BFS. 第一遍给图的点标记上序号, 第二遍BFS, 只走向序号较小的孩子节点2. 迷糊了, 一个无权图, 还用了 dijkstra 算法 阅读全文
posted @ 2014-04-05 18:50 周卓 阅读(200) 评论(0) 推荐(0) 编辑
摘要: 题目描述总结1. 可以使用记忆化DP, 也可以直接用循环2. 关于板子重叠的情况. 不需要考虑板子重叠的情况. 假如 board1, board2 之间的高度差大于限定, 那么不能完成降落, 或者不能直接完成降落. 阅读全文
posted @ 2014-04-05 17:13 周卓 阅读(100) 评论(0) 推荐(0) 编辑
摘要: 题目描述总结1. [i~j] 之间建立一个邮局, 位置是 (i+j+1)/22. 初始化, 尽可能少的初始化代码/* * source.cpp * * Created on: 2014-4-5 * Author: vincent */#include #include #include #include using namespace std;const int NUM = 310;const int INF = 0X3F3F3F3F;int arr[10010];int dist[NUM][NUM];int dp[NUM][31];void init(int n) { for(i... 阅读全文
posted @ 2014-04-05 11:33 周卓 阅读(154) 评论(0) 推荐(0) 编辑
摘要: 题目描述总结1. DFS 使用 dfs(u, v) 框架可以省去 visited[]; 还可以添加一个辅助的 dummy 头结点2. 需要 long long 类型才可以3. 题目本身比较简单, DFS 后序遍历, 树形 DP 的最简单题型代码 数据类型有误/* * source.cpp * * Created on: 2014-4-5 * Author: vincent */#include #include #include #include #include #include #include #include #include using namespace std;con... 阅读全文
posted @ 2014-04-05 10:49 周卓 阅读(156) 评论(0) 推荐(0) 编辑
摘要: 题目描述总结1. dp[i][j] 第二个变量 j 的设置. j 可以设置成 Money, 也可以是带宽. 分别写一下状态转移方法会发现 j 是带宽时简单些, 并且带宽枚举量少一下2. dp[i][j] = min(dp[i][j], price[i][k]+dp[i-1][j]) for all k that bw[i][k] >= j代码 WA. discuss 的测试数据都通过了, 可能是 dp[-1] 的问题, 以后再改吧/* * source.cpp * * Created on: 2014-4-5 * Author: vincent *//* * dp[i][j] 前 ... 阅读全文
posted @ 2014-04-05 09:48 周卓 阅读(164) 评论(0) 推荐(0) 编辑
上一页 1 ··· 5 6 7 8 9 10 11 12 13 下一页