上一页 1 ··· 160 161 162 163 164 165 166 167 168 ··· 182 下一页
摘要: 双向广度优先搜索,本来是想哪个节点少扩展哪个,但是有一个问题,就是有可能上端的x层节点扩展出x+1层,下端的y层扩展出y+1层,这两个+1层有重合,便直接跳出,输出x+y+1,这样可能导致错误,因为x层节点并没有完全扩展完毕,很可能接下来要扩展的x层节点会扩展出的x+1层节点直接与y层节点重合。View Code #include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#include <queue>using namespace std;stru 阅读全文
posted @ 2011-03-29 10:33 金海峰 阅读(205) 评论(0) 推荐(0) 编辑
摘要: 记忆化搜索,使用dfs,从0,0点开始,把每个点对应的剩下路程所能得到的最大值存入f数组。View Code #include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#include <vector>#include <cmath>#include <queue>using namespace std;#define maxn 105int map[maxn][maxn];int f[maxn][maxn];int ans, 阅读全文
posted @ 2011-03-29 09:03 金海峰 阅读(132) 评论(0) 推荐(0) 编辑
摘要: 用素数筛,枚举所有区间,把加和,并把ans对应的位+1.View Code #include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>using namespace std;#define maxn 10005bool is[maxn];int prm[maxn];int sum[maxn];int ans[maxn];int getprm(int n){ int i, j, k = 0; int s, e = (in 阅读全文
posted @ 2011-03-24 12:40 金海峰 阅读(535) 评论(0) 推荐(0) 编辑
摘要: 题意:一个无向图,每条边有两个权值,c和l,要求一个生成树,使得所有边的c的和比上l的和最小。分析:最优比例生成树。现在要求(c1+...)/(l1+...),设一个比例值变量为r。令r>=(c1+...)/(l1+...)。现在题目转化为求r的最小值。假设我们对于一个确定的r可以判断该不等式是否可以满足,那么我们可以用二分查找的方法来求r的最小值,因为r猜大了则可满足,猜小了则不可满足。然而,我们确实可以对于一个确定的r来判定是否可满足不等式,方法如下:现在r是确定的,相当于已知r。先将不等式整理为如下形式:(r*l1-c1)+...>=0,然后我们使不等式左边尽量大即可。现在不 阅读全文
posted @ 2011-03-23 21:37 金海峰 阅读(1608) 评论(0) 推荐(0) 编辑
摘要: 按c排序,c相同则按d排序(均从小到大),从左至右遍历,当发现一个的d比前面出现过的最小的d还小那么它一定是解。View Code #include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#include <algorithm>using namespace std;#define maxn 10005struct Hotel{ int c, d;} f[maxn];int n, ans;bool operator <(const Hotel 阅读全文
posted @ 2011-03-23 20:46 金海峰 阅读(190) 评论(0) 推荐(0) 编辑
上一页 1 ··· 160 161 162 163 164 165 166 167 168 ··· 182 下一页