FZU2235 国王的出游 水题
因为只有1e5个点,所以直接离散化bfs就好
#include <cstdio>
#include <cstring>
#include <queue>
#include <set>
#include <map>
#include <stack>
#include <cstdlib>
#include <algorithm>
#include <vector>
#include <cmath>
using namespace std;
typedef long long LL;
typedef pair<int,int>pii;
const int N=1e5+;
const int INF=0x3f3f3f3f;
const int mod=;
pii p[N],tmp;
int dx[]={-,-,-,,,,,};
int dy[]={-,,,-,,-,,};
int head[N],tot,d[N],cnt;
struct Edge{
int v,next;
}edge[*N];
void add(int u,int v){
edge[tot].v=v;
edge[tot].next=head[u];
head[u]=tot++;
}
queue<int>q;
int get(int s,int t){
while(!q.empty())q.pop();
memset(d,-,sizeof(d));
d[s]=;q.push(s);
while(!q.empty()){
int u=q.front();
q.pop();
if(u==t)return d[t];
for(int i=head[u];~i;i=edge[i].next){
int v=edge[i].v;
if(d[v]==-)d[v]=d[u]+,q.push(v);
}
}
return -;
}
int main(){
int x1,x2,y1,y2,n,s,t;
while(~scanf("%d%d%d%d",&x1,&y1,&x2,&y2)){
scanf("%d",&n);
memset(head,-,sizeof(head)),cnt=tot=;
for(int i=;i<=n;++i){
int x,l,r;
scanf("%d%d%d",&x,&l,&r);
for(int j=l;j<=r;++j)
++cnt,p[cnt].first=x,p[cnt].second=j;
}
sort(p+,p++cnt);
cnt=unique(p+,p++cnt)-p-;
for(int i=;i<=cnt;++i){
for(int j=;j<;++j){
tmp.first=p[i].first+dx[j];
tmp.second=p[i].second+dy[j];
int pos=lower_bound(p+,p++cnt,tmp)-p;
if(pos==cnt+||p[pos].first!=tmp.first||p[pos].second!=tmp.second)
continue;
add(i,pos);
}
}
tmp.first=x1,tmp.second=y1;
s=lower_bound(p+,p++cnt,tmp)-p;
tmp.first=x2,tmp.second=y2;
t=lower_bound(p+,p++cnt,tmp)-p;
printf("%d\n",get(s,t));
}
return ;
}
FZU2235 国王的出游 水题的更多相关文章
- 【BZOJ】3850: ZCC Loves Codefires(300T就这样献给了水题TAT)
http://www.lydsy.com/JudgeOnline/problem.php?id=3850 题意:类似国王游戏....无意义.. #include <cstdio> #inc ...
- HDOJ 2317. Nasty Hacks 模拟水题
Nasty Hacks Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Tota ...
- ACM :漫漫上学路 -DP -水题
CSU 1772 漫漫上学路 Time Limit: 1000MS Memory Limit: 131072KB 64bit IO Format: %lld & %llu Submit ...
- ytu 1050:写一个函数,使给定的一个二维数组(3×3)转置,即行列互换(水题)
1050: 写一个函数,使给定的一个二维数组(3×3)转置,即行列互换 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 154 Solved: 112[ ...
- [poj2247] Humble Numbers (DP水题)
DP 水题 Description A number whose only prime factors are 2,3,5 or 7 is called a humble number. The se ...
- gdutcode 1195: 相信我这是水题 GDUT中有个风云人物pigofzhou,是冰点奇迹队的主代码手,
1195: 相信我这是水题 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 821 Solved: 219 Description GDUT中有个风云人 ...
- BZOJ 1303 CQOI2009 中位数图 水题
1303: [CQOI2009]中位数图 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 2340 Solved: 1464[Submit][Statu ...
- 第十一届“蓝狐网络杯”湖南省大学生计算机程序设计竞赛 B - 大还是小? 字符串水题
B - 大还是小? Time Limit:5000MS Memory Limit:65535KB 64bit IO Format: Description 输入两个实数,判断第一个数大 ...
- ACM水题
ACM小白...非常费劲儿的学习中,我觉得目前我能做出来的都可以划分在水题的范围中...不断做,不断总结,随时更新 POJ: 1004 Financial Management 求平均值 杭电OJ: ...
随机推荐
- Git 安装与使用(一)
一.简介 1.集中式版本控制系统(CVS):Svn * 版本库是集中存放在中央服务器中的,客户端需要先从中央服务器取得最新的版本,然后再干活,活干完后,再把自己的代码推送给中央服务器. ...
- 让hyper-v虚拟机中类ubuntu系统可以全屏
很久之前一直都没有方法让linux虚拟机支持hyper-v的全屏,只能以1024x768或者800x600等方形屏幕 如果是windows7以前的电脑,可以用mstsc远程桌面修改分辨率,window ...
- php使用phpmailer发送邮件
本人新手,由于要做邮件发送验证码,所以找到和搜集到这些,本人亲测完全可以用 这是163邮箱的 因为不是企业邮箱填写的账号是163的账号,但是密码是授权码 授权码的获取方式为:
- mirantis fuel puppet执行顺序 和 对整个项目代码的执行流程理解
stage执行顺序 stage {'zero': } -> stage {'first': } -> stage {'openstack-custom-repo': } -> sta ...
- Windows下使用cmd启动Oracle EM和sql命令使用+主机身份认证
(1)cmd命令下使用sql命令 >sqlplus / as sysdba sql>select * from v$version; (2)cmd命令下启动Oracle EM 安装完ora ...
- HDU 3749 Financial Crisis
Financial Crisis 题意:给一个图,包含N ( 3 <= N <= 5000 )个点, M ( 0 <= M <= 10000 )条边 and Q ( 1 < ...
- Winodws live writer
发布一篇试试.
- matlab vs python
(参考)从下图可以清晰看到matlab和python之间的区别 Python是一种编程语言,但与其他变成语言的不同在于:python具有许多的扩展库(通过import引入) Matlab是集合计算环境 ...
- range([start], stop[, step]):产生一个序列,默认从0开始
range([start], stop[, step]):产生一个序列,默认从0开始 >>> l = range(10) >>> l [0, 1, 2, 3, 4, ...
- 分别取商和余数:divmod(a, b)
使用函数:divmod(a, b)可以实现分别取商和余数的操作: >>> divmod(123,3) (41, 0) >>> divmod(200,6) (33, ...