【USACO】CODE[VS] 3060 && openjudge 2971 捉住那头牛
2016-10-30 20:48
387 查看
3060 抓住那头奶牛 USACO
时间限制: 1 s
空间限制: 16000 KB
题目等级 : 黄金 Gold
题解
题目描述 Description
农夫约翰被告知一头逃跑奶牛的位置,想要立即抓住它,他开始在数轴的N 点(0≤N≤100000),奶牛在同一个数轴的K 点(0≤K≤100000)。约翰有两种移动方式:1 分钟内从x 点移动到x+1 或x-1;1 分钟内从x 点移动到2x。假设奶牛不会移动,约翰抓住它需要多少时间?
输入描述 Input Description
一行两个整数N 和K,用空格隔开。
输出描述 Output Description
约翰抓住它需要的最少时间。
样例输入 Sample Input
5 17
样例输出 Sample Output
4
思路:
BFS + 队列
每到下一个的点 就把三种情况执行一次 更新状态 将所有可能状态入队
因为BFS按层遍历的性质,第一次访问到答案的时候一定是最优的
代码:
时间限制: 1 s
空间限制: 16000 KB
题目等级 : 黄金 Gold
题解
题目描述 Description
农夫约翰被告知一头逃跑奶牛的位置,想要立即抓住它,他开始在数轴的N 点(0≤N≤100000),奶牛在同一个数轴的K 点(0≤K≤100000)。约翰有两种移动方式:1 分钟内从x 点移动到x+1 或x-1;1 分钟内从x 点移动到2x。假设奶牛不会移动,约翰抓住它需要多少时间?
输入描述 Input Description
一行两个整数N 和K,用空格隔开。
输出描述 Output Description
约翰抓住它需要的最少时间。
样例输入 Sample Input
5 17
样例输出 Sample Output
4
思路:
BFS + 队列
每到下一个的点 就把三种情况执行一次 更新状态 将所有可能状态入队
因为BFS按层遍历的性质,第一次访问到答案的时候一定是最优的
代码:
#include <iostream> #include <cstdio> #include <cstring> #include <queue> const int MAXN = 100005; using namespace std; queue<int> q; int step[MAXN]; //跟随数组,记录步数 bool vis[MAXN]; int n,k,next,head; int bfs() { q.push(n); step =0; vis =1; while(!q.empty()) { head=q.front(); q.pop(); //分三个方向BFS for(int i=0; i<3 ;i++)//对其中一种情况一搜到底。。记录所有路径 { if(i==0) next=head-1; else if(i==1) next=head+1; else next=head*2; if(next > MAXN || next<0 ) continue; //必须先判断,不然会RE,数组越界了 if(!vis[next]) { q.push(next); step[next]=step[head]+1;//前一条路径数目,对应的走过的路程,即为当前的路程数 vis[next]=1; } if(next==k) return step[next];//广搜的特性,返回的第一个一定是最短的路径 } } } int main() { memset(vis,0,sizeof(vis)); scanf("%d%d",&n,&k); if(n>=k) { printf("%d",n-k); } else { printf("%d",bfs()); } return 0; }
相关文章推荐
- OpenJudge noi 9267 核电站(codevs 2618)
- OpenJudge 2971 抓住那头牛
- noi.openjudge——2971 抓住那头牛
- NOI OpenJudge 2971:抓住那头牛 BFS
- 【bzoj 2442】【codevs 4654】[Usaco2011 Open]修剪草坪(dp+单调队列)
- OpenJudge noi 2971抓住那头牛(POJ 3278)
- OpenJudge noi 06寻宝(codevs1314)
- ETL´s: Talend Open Studio vs Pentaho Data Integration (Kettle). Comparative.
- VS 下 Open Cascade Source Code 编译及自定义工程设置()
- VS 下 Open Cascade Source Code 编译及自定义工程设置
- 【codevs2094/usaco】 量取牛奶 解题报告
- 51nod-1158 . 全是1的最大子矩阵 &&CODEVS-2491 玉蟾宫(枚举+单调栈 or dp)
- CodeVs 1135 && noip 2011 Day1-2 选择客栈
- 【codevs2039/USACO】 骑马修栅栏 图论算法之欧拉(回)路
- 【BZOJ】【3697】采药人的路径&【3127】【USACO2013 Open】Yin and Yang
- open cv & vs
- Code Vs 1169 传纸条 && 2008年NOIP全国联赛提高组
- VS 错误2 fatal error C1083: Cannot open include file: 'sys/time.h'
- Code Vs 1155 金明的预算方案&& 2006年NOIP全国联赛提高组
- Using VS 2005 Code Snippets to Write Better Code Faster