[USACO07OPEN]Catch That Cow
2024-08-31 09:56:34
题目:洛谷P1588、HDU2717
题目大意:有一个人在点$n$,一头牛在点$k$,人每秒能从$x$移动到点$x+1$、$x-1$、$2x$,牛不会动,求最少多少秒后人能移动到牛所在的$k$。
思路:BFS。按照题意进行广搜。
注意:题目数据较大,如中途计算中的点$x$大于100000或小于1,则不放入队列中。
两处题目读入不太一样。
细节见代码。
C++ Code:
#include<cstdio>
#include<queue>
#include<cstring>
using namespace std;
bool b[];
int main(){
int n,k;
while(scanf("%d%d",&n,&k)!=EOF){
if(n>=k){//特判n≥k的情况
printf("%d\n",n-k);continue;
}
queue<int>q1,q2;
q1.push(n);
q2.push();
memset(b,,sizeof(b));
b[n]=;
while(!q1.empty()){
int p=q1.front();q1.pop();
int P=q2.front();q2.pop();
int l=p-;
if(l&&b[l]){
if(l==k){
printf("%d\n",P+);break;
}
b[l]=;
q1.push(l);
q2.push(P+);
}
l=p+;
if(l<=&&b[l]){
if(l==k){
printf("%d\n",P+);break;
}
b[l]=;
q1.push(l);
q2.push(P+);
}
l=p*;
if(l<=&&b[l]){
if(l==k){
printf("%d\n",P+);break;
}
b[l]=;
q1.push(l);
q2.push(P+);
}
}
}
return ;
}
最新文章
- 一个简易的四则运算单元...(15.12.15 BUG更新)
- Android 弹出对话框Dialog充满屏幕宽度
- nopcommerce3.5源代码及中文语言包下载地址
- 【nginx网站性能优化篇(2)】反向代理实现Apache与Nginx的动静分离(LNMPA)
- 标准I/O的替代软件
- 使用webpack打包vue工程
- 前端面试必备的css盒子模型
- Nginx安装- CentOS7
- 【Android】Android自定义属性,attr format取值类型
- [redis] <;<;The little Redis book>;>;的读书笔记
- 开源PaaS工具CloudFoundry落地阿里云
- illumina support
- 向多页TABLE中插入数据时,新增行总是在当前页的最后一行
- 使用类加载器加载配置文件/getClassLoader().getResourceAsStream()
- underscore.js常用方法整理(慢慢完善)
- CString与输入输出流对象问题。
- Linux 解压 压缩 tar
- Microsoft Office Specialist (MOS) 认证考试详解---word 2010 部分
- nbu异地备份实施前,数据收集日志
- AtCoder Regular Contest 103 题解