poj3278 openjudge4001 抓住那头牛 解题报告
来源:互联网 发布:福耀玻璃 知乎 编辑:程序博客网 时间:2024/06/04 01:13
- 总时间限制:
- 2000ms
- 内存限制:
- 65536kB
- 描述
农夫知道一头牛的位置,想要抓住它。农夫和牛都位于数轴上,农夫起始位于点N(0<=N<=100000),牛位于点K(0<=K<=100000)。农夫有两种移动方式:
1、从X移动到X-1或X+1,每次移动花费一分钟2、从X移动到2*X,每次移动花费一分钟假设牛没有意识到农夫的行动,站在原地不动。农夫最少要花多少时间才能抓住牛?- 输入
- 两个整数,N和K
- 输出
- 一个整数,农夫抓到牛所要花费的最小分钟数
- 样例输入
5 17
样例输出
4
分析:一道很基本的广搜题,上课听完老师讲之后就直接动手试了一下
#include<iostream>#include<cstring>#include<algorithm>#include<queue>using namespace std;const int SIZE = 100010;int farmer, cow;struct Loc{int x;int step;Loc(int a, int b) :x(a), step(b) {}};queue<Loc>location;bool walked[SIZE+10];int main(){cin >> farmer >> cow;memset(walked, 0, sizeof(walked));location.push(Loc(farmer, 0));walked[farmer] = true;while (!location.empty()) {Loc tmp = location.front();if (tmp.x == cow) {cout << tmp.step;break;}if (tmp.x >= 1 && !walked[tmp.x - 1]) {location.push(Loc(tmp.x - 1, tmp.step + 1));walked[tmp.x - 1] = true;}if (tmp.x <= SIZE - 1 && !walked[tmp.x + 1]) {location.push(Loc(tmp.x + 1, tmp.step + 1));walked[tmp.x + 1] = true;}if (tmp.x <= SIZE / 2 && !walked[tmp.x * 2]) {location.push(Loc(tmp.x * 2, tmp.step + 1));walked[tmp.x * 2] = true;}location.pop();}return 0;}
大概这样,感觉广搜的想法很巧妙啊~~~还要继续学习QAQ
阅读全文
0 0
- poj3278 openjudge4001 抓住那头牛 解题报告
- POJ3278==抓住那头牛
- 抓住那头牛
- 抓住那头牛
- 抓住那头牛
- 抓住那头牛
- 抓住那头牛
- 抓住那头牛
- 抓住那头牛
- [PKU暑课笔记] 广度优先搜索BFS POJ3278抓住那头牛 POJ3984迷宫问题
- 【openjudge】抓住那头牛
- openjudge 抓住那头牛
- openjudge2971 抓住那头牛
- 2971:抓住那头牛
- 2971:抓住那头牛
- 广度优先搜索bfs与抓住那头奶牛(Catch that cow, poj3278)
- poj3278解题报告
- POJ3278解题报告
- Ubuntu如何正确地切换Intel和Nvidia显卡
- CentOS 7 中使用 Sendmail 通过 PHP 发送邮件
- 【模板】Dinic求最大流
- 每天学一点Swift----面向对象上(十一)
- lintcode 547两数组的交 lintcode 548两数组的交II
- poj3278 openjudge4001 抓住那头牛 解题报告
- 学习C的一些笔记(二)
- 前端基础笔记03
- TSET
- Codeforces 799D. Field expansion 【DP】
- VMware虚拟机三种网络模式详解 NAT(地址转换模式)
- 前端基础笔记04
- 浅析Linux下的信号量
- BZOJ 3671 [NOI2014 D2T2] 随机数生成器