
POJ部分题目
文章平均质量分 65
chuanwang66
软件工程专业
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
POJ1122 记录前驱树Dij
#include<stdio.h> #include<stdlib.h> #include<algorithm> #include <iostream> using namespace std; const int MAX=25; const int INF=1<<27; //graph info. int n; ...原创 2012-03-15 14:12:17 · 106 阅读 · 0 评论 -
POJ1252-Euro Efficiency-DP,完全背包(允许找零)
参考这里: 允许找零应该怎么做: http://www.4ucode.com/Study/Topic/2119680 实在不会看这里: http://hi.baidu.com/wy_erhu/blog/item/057fed168e02660d972b4331.html 我最初的代码是不考虑找零的完全背包:(代码) #include <stdio.h> #incl...原创 2012-04-04 20:54:26 · 124 阅读 · 0 评论 -
POJ3628-Bookshelf 2-DP,0-1背包
方法一:最朴素方法,不优化时间和空间 空间和时间复杂度都是O(n*s),n为奶牛数目,s为奶牛高度之和 代码:照理说,空间复杂度超过限制,但是POJ居然通过了 #include <stdio.h> #include <stdlib.h> #include <iostream> using namespace std; int n; ...原创 2012-04-04 14:58:49 · 175 阅读 · 0 评论 -
POJ1176 Party Lamps-DFS枚举,异或作为状态转移函数
1. 灯每6个一组状态循环一次: ==> 只需要枚举灯"1,2,3,4,5,6即可",之后的状态在输出时按要求循环输出即可。 2. 异或操作 作为 状态转移函数可以大大减少状态枚举的搜索树深度: ——异或满足“交换律(已证-真值表)”和“结合律(已证-真值表)”;偶数次异或操作将不对状态产生任何影响。 ==> 只需要考虑每种灯被按下0次/1次的所有组合情况即可 #inc...原创 2012-03-31 15:42:13 · 121 阅读 · 0 评论 -
POJ1088-滑雪-DP,查表法
DP-查表法 查表法的前提—— 1. 不能循环查询 例如,本题目:查询dp(i,j),需要在内部查询dp(i',j'),可能继续进行递归,但因为递归过程总是沿着海拔降低,故不可能回过头来再次查询dp(i,j) 2. 正确处理递归(查表)终止条件 本题中,如果点(i,j)旁边没有低于它的点,则len[i][j]为0,直接返回 代码: #incl...原创 2012-03-30 19:36:22 · 152 阅读 · 0 评论 -
POJ1050-To the Max-DP
参见《编程之美》2.14, 2.15 子数组和最大值(一维&二维) 转:POJ 2479/POJ 2593的拓展,从一维数组变成了二维矩阵,不过我们可以把情况模拟成一维的情况,在DP的基础上需要加上枚举。 题目要求求出给定的一个矩阵的和最大的子矩阵。 我们可以枚举第a行到第c行的情况(假设已经确定矩阵已经确定为最上面为第a行,最下面为第c行),那么只需要确定列的范围即可。我们可以...原创 2012-03-30 16:51:31 · 105 阅读 · 0 评论 -
POJ1037-A decorative fence-DP,求字典序第i个序列
参考: 一、求字典序的第i个排列 参见: http://jay23jack.blog.163.com/blog/static/317951942009130215813/ 暴力枚举可以很轻松地得到符合的排列,事实上不妨ms写一个,来产生更强的样例。当然,答案不会是暴力,而是一种很常见的方法,可以说是这种求指定编号问题的通法吧! 直接一位一位枚举答案!从前...原创 2012-03-30 10:36:00 · 158 阅读 · 0 评论 -
POJ1185-炮兵阵地-状态压缩DP
1. 为何状态压缩: 棋盘规模为n*m,且m≤10,如果用一个int表示一行上棋子的状态,足以表示m≤10所要求的范围。故想到用int s[num]。至于开多大的数组,可以自己用DFS搜索试试看;也可以遍历0~2^m-1,对每个数值的二进制表示进行检查;也可以用数学方法(?) 2. 如何构造状态: 当然,在此之前首先要想到用DP(?)。之后,才考虑去构造状态函数f(.....原创 2012-03-28 17:10:52 · 209 阅读 · 0 评论 -
POJ1125 Floyd
#include<iostream> using namespace std; const int MAX=105; const int INF=1<<27; int n; int w[MAX][MAX]; int d[MAX][MAX]; void init(){ int i,j; for(i=1;i<=n;i++){ for...原创 2012-03-15 15:31:06 · 102 阅读 · 0 评论 -
POJ1014-Dividing-多重背包
本代码中的几个函数可以作为“0-1背包”、“完全背包” 和“多重背包”的模板: #include <iostream> #define INF 100000000 using namespace std; int f[240005]; //f[j]相当于f[i][j]: 考虑1...i个物品,恰好放到容量为j,所能达到的最大价值 int v; //背包...原创 2012-04-06 10:06:54 · 200 阅读 · 0 评论