CodeForces
来源:互联网 发布:中华养生 源码 编辑:程序博客网 时间:2024/05/18 02:12
点击打开链接
题意:
给你个起点,终点。
在无限大的地图上,跑,问你能不能从起点跑到终点。
题解:
地图太大。无法用数组。
那么怎么办呢, 用stl 。
pair型的队列。把步数直接存在标记里面。
标记用map<pair<int,int>,int>. 一个点一个点的标记。
剩下的就是简单广搜。
stl真是强大。
各种嵌套着用。
#include<iostream>#include<string>#include<stdio.h>#include<string.h>#include<map>#include<queue>#include<math.h>#include<algorithm>using namespace std;int sx,sy,ex,ey,n,r,a,b;int main(){ pair<int,int>p,t; map<pair<int,int>,int>m; queue<pair<int,int> >que; scanf("%d %d %d %d",&sx,&sy,&ex,&ey); scanf("%d",&n); while(n--){ scanf("%d %d %d",&r,&a,&b); for(int i=a;i<=b;++i){ p.first=r,p.second=i; m[p]=-1; } } p.first=sx,p.second=sy; que.push(p); m[p]=1; while(!que.empty()){ p=que.front(); que.pop(); for(int i=-1;i<=1;++i){ for(int j=-1;j<=1;++j){ if(i==j&&i==0) continue; t.first=p.first+i,t.second=p.second+j; if(m[t]==-1){ m[t]=m[p]+1; que.push(t); } } } } p.first=ex,p.second=ey; if(m[p]>0) m[p]--; printf("%d\n",m[p]); return 0;}
0 0
- codeforces~~~
- Codeforces
- codeforces
- Codeforces
- codeforces
- codeforces
- Codeforces
- Codeforces
- CodeForces
- CodeForces
- CodeForces
- CodeForces
- CodeForces
- Codeforces
- Codeforces
- Codeforces
- Codeforces
- Codeforces
- 关于unsigned属性涉及数据减法时引发的bug问题和时间用bigint的说明
- linux 安装mysql
- pod 'KVOController', '~> 1.2.0'
- 文章标题
- java学习之道 --- 如何学习java?
- CodeForces
- CSU1855:Shut the Box(二进制状态压缩+BFS)
- 【C语言】指针
- 跟小博老师一起学习数据库 ——WHERE子句
- JavaScript最全正则表达式
- Gym
- C++基础笔记
- javascript找到提供的句子中最长的单词,并计算它的长度
- 20170401去哪儿笔试