随笔分类 -  搜索+剪枝

poj-1167 The Buses ****
摘要:1 /* 2 * DFS 3 * 两种搜索策略, 详见 lrj《算法艺术与信息学竞赛》P183 4 * 以下有两种策略的实现 5 * 6 * 7 * 策略一: 基于“线路”:(详见注释) 8 * 另外可见 http://blog.sina.com.cn/s/blog_68629c770100wpit.html 9 * 10 * 策略二: 基于“车辆”: 11 * [分析](转自 http://acm.sdibt.edu.cn/blog/?p=66) 12 * 此题是明显的搜索题,且... 阅读全文

posted @ 2012-03-18 11:50 龙豆 阅读(666) 评论(0) 推荐(0) 编辑

poj-1324 Holedox Moving **** [转]
摘要:[转] http://bbs.byr.cn/wForum/disparticle.php?boardName=ACM_ICPC&ID=28668&pos=6&page=1 贪食蛇的进化之路 此题是要求计算贪食蛇从一个初始位置把头移动到(0,0)位置需要最少移动的步数。 以下是我的优化过程。 Run id user id problem result memory time language codelength submit time4981334 zengkui 1324 Accepted 244K 16MS C++ 5548B 2009-04-15 11:04:24 阅读全文

posted @ 2011-11-17 21:52 龙豆 阅读(525) 评论(0) 推荐(0) 编辑

poj-2170 Lattice Animals *****
摘要:/* * 2170.cpp * * 很繁的一个题。。。 * * dfs + hash * 这个速度很慢, 不过答案应该都是对的, 先贴上来吧。。 最近没时间做了 。 以后再改。。 * * 可以改进的有 搜索方式 和 hash函数 * * Created on: 2011-10-17 */#include <cstdio>#include <cstring>using namespace std;const int maxp = 5000 + 10;const int maxn = 25, z = 12;const int hashNum = 19997;const in 阅读全文

posted @ 2011-10-18 22:49 龙豆 阅读(682) 评论(0) 推荐(0) 编辑

poj-2049 Finding Nemo *
摘要:【转】 (看了题目,感觉用广搜, 就没做~ 直接转一个~ )搜索题,我的做法是用优先队列(保证当前所通过的门是最少的),所以遇见出口,就可以直接得到结果,搜索从Nemo的位置开始,有三种情况,遇见门,door加1,入队,遇见air,直接入队,遇见墙,continue;我的存储结构见代码,这里还要注意两点,一是Nemo的位置可能超出[1--199],所以开始时有必要进行判断(因为这,n个runtime error ,郁闷了几个小时。。)二是这个如果用C++提交的话,好像输入Nemo的位置时,必须用cin(不能用scanf,当然G++也可以通过的),这是偶然在discuss上看到的,要不,不知又. 阅读全文

posted @ 2011-09-03 17:06 龙豆 阅读(1143) 评论(0) 推荐(0) 编辑

poj-1856 Sea Battle *
摘要:/* * bfs * 又是一道水题。。1A * */#include <cstdio>#include <cstring>using namespace std;const int MAXN = 1000 + 5;int r, c; //同题意bool vis[MAXN][MAXN];char map[MAXN][MAXN];// sx,sy:矩形左上角。。ex,ey:矩形右下角..tot:矩形数。。。flag:是否正确int sx, sy, ex, ey, tot, flag;//获得ex,ey.. 若不是矩形,返回falsebool inline get_cor(i 阅读全文

posted @ 2011-07-16 21:06 龙豆 阅读(325) 评论(0) 推荐(0) 编辑

poj-1980 Unit Fraction Partition **
摘要:/* * 本以为这题剪枝会很难,没想到1A了。。32ms * 这个题的难点是分数的处理。。不要用double。。精度难以把握。。 * */#include <cstdio>#include <cmath>using namespace std;int p, q, a, n, tot; //如题目定义,tot为答案//p1/q1 和 p2/q2 比较大小int inline frac_cmp(int p1, int q1, int p2, int q2){ return p1 * q2 - p2 * q1;}/*int inline gcd(int a, int b){ 阅读全文

posted @ 2011-07-15 21:22 龙豆 阅读(951) 评论(0) 推荐(1) 编辑

poj-1190 生日蛋糕 **
摘要:/* * dfs+剪枝 * 注意到:N = (ri * ri * hi)求和 * S = r1 * r1 + (2*ri*hi)求和 (水平面面积之和第一层的半径有关) * */#include <cstdio>#include <cmath>using namespace std;const int INF = 10000000;const int MAXM = 20 + 5;int n, m, s;//可以使剪枝更加精确。。 79ms->63msint min_v[MAXM];int min_s[MAXM];void build(){ min_v[m] = 1 阅读全文

posted @ 2011-07-14 22:27 龙豆 阅读(471) 评论(0) 推荐(0) 编辑

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示