模拟。

每次找一下即将要遇到的那个点,这个数据范围可以暴力找,自己的写的时候二分了一下。如果步数大于$4*n$一定是$-1$。

#include<bits/stdc++.h>
using namespace std; const int INF = 0x7FFFFFFF;
const int mod = 1e9 + ;
const int N = 5e6 + ;
const int M = 1e4 + ;
const double eps = 1e-;
int T,n,m; struct P
{
int x,y;
P(int X=,int Y=)
{
x=X;
y=Y;
}
}p[],q[]; bool cmp1(P a,P b)
{
if(a.x!=b.x) return a.x<b.x;
return a.y<b.y;
} bool cmp2(P a,P b)
{
if(a.y!=b.y) return a.y<b.y;
return a.x<b.x;
} int nowx,nowy,nowd; int main()
{
while(~scanf("%d",&n))
{
for(int i=;i<=n;i++)
{
scanf("%d%d",&p[i].x,&p[i].y);
q[i].x=p[i].x;
q[i].y=p[i].y;
} sort(p+,p++n,cmp1);
sort(q+,q++n,cmp2); nowx=nowy=; nowd=; int ans=; while()
{
if(nowd==)
{
int k = lower_bound(q+,q+n+,P(nowx,nowy),cmp2)-q;
if(k==n+||q[k].y!=nowy)
{
printf("%d\n",ans);
break;
}
else ans++,nowx = q[k].x-,nowd=(nowd+)%;
}
else if(nowd==)
{
int k = lower_bound(q+,q+n+,P(nowx,nowy),cmp2)-q-;
if(k==||q[k].y!=nowy)
{
printf("%d\n",ans);
break;
}
else ans++,nowx = q[k].x+,nowd=(nowd+)%;
} else if(nowd==)
{
int k = lower_bound(p+,p+n+,P(nowx,nowy),cmp1)-p-;
if(k==||p[k].x!=nowx)
{
printf("%d\n",ans);
break;
}
else ans++,nowy = p[k].y+,nowd=(nowd+)%;
} else
{
int k = lower_bound(p+,p+n+,P(nowx,nowy),cmp1)-p;
if(k==n+||p[k].x!=nowx)
{
printf("%d\n",ans);
break;
}
else ans++,nowy = p[k].y-,nowd=(nowd+)%;
} if(ans>*n)
{
printf("-1\n");
break;
}
}
}
return ;
}

SCU 4445 Right turn的更多相关文章

  1. 模拟+贪心 SCU 4445 Right turn

    题目传送门 /* 题意:从原点出发,四个方向,碰到一个点向右转,问多少次才能走出,若不能输出-1 模拟:碰到的点横坐标相等或纵坐标相等,然而要先满足碰到点最近, 当没有转向或走到之前走过的点结束循环. ...

  2. SCU 4445 Right turn(dfs)题解

    思路:离散化之后,直接模拟就行,标记vis开三维 代码: #include<iostream> #include<algorithm> #include<cstdio&g ...

  3. SCU Right turn

    Right turn frog is trapped in a maze. The maze is infinitely large and divided into grids. It also c ...

  4. Lesson 11 One good turn deserves another

    Text I was having dinner at a restaurant when Tony Steele came in. Tony worked in a layer's office y ...

  5. ACM:SCU 4437 Carries - 水题

    SCU 4437  Carries Time Limit:0MS     Memory Limit:0KB     64bit IO Format:%lld & %llu  Practice  ...

  6. ACM: SCU 4438 Censor - KMP

     SCU 4438 Censor Time Limit:0MS     Memory Limit:0KB     64bit IO Format:%lld & %llu  Practice D ...

  7. ACM: SCU 4440 Rectangle - 暴力

     SCU 4440 Rectangle Time Limit:0MS     Memory Limit:0KB     64bit IO Format:%lld & %llu  Practic ...

  8. webrtc进阶-信令篇-之三:信令、stun、turn、ice

    webRTC支持点对点通讯,但是webRTC仍然需要服务端:  . 协调通讯过程中客户端之间需要交换元数据,    如一个客户端找到另一个客户端以及通知另一个客户端开始通讯.  . 需要处理NAT(网 ...

  9. HDU-4869 Turn the pokers

    原题:  Turn the pokers       思路:假设正面为0,反面为1.牌就像这样 000000....... .考虑到假如可以实现最终反面个数为m, 牌共n张, 则这n张排任取m个为反面 ...

随机推荐

  1. OpenCV---图像金字塔原理

    图像金字塔原理 (一)图像缩小(先高斯模糊,再降采样,需要一次次重复,不能一次到底) (二)图像扩大(先扩大,再卷积或者使用拉普拉斯金字塔) 图像金字塔介绍 图像金字塔是图像中多尺度表达的一种,最主要 ...

  2. Lucene 索引与检索架构图

  3. 【BZOJ】1690: [Usaco2007 Dec]奶牛的旅行

    [算法]01分数规划-最优比率环 [题意]给定有向图,点有收益,边有代价,重复经过的话收益不叠加而代价叠加,求从任意点开始最后回归该点的(收益/代价)最大. [题解] 和普通的分数规划不同,这里的方案 ...

  4. 【BZOJ】3091: 城市旅行 Link-Cut Tree

    [题意]参考PoPoQQQ. 给定一棵树,每个点有一个点权,提供四种操作: 1.删除两点之间的连边 不存在边则无视 2.在两点之前连接一条边 两点已经联通则无视 3.在两点之间的路径上所有点的点权加上 ...

  5. JavaScript事件和方法

    单击一个超链接触发事件 1.用a标签的onclick <a href="#" onclick="js代码"> 这种写法呢,存在一种弊端,就是点击后会 ...

  6. LOW逼三人组(二)----选择排序算法

    选择排序思路: 算法程序: def cal_time(func): # 装饰器 ,用来检测算法所执行的时间 def wrapper(*args,**kwargs): t1=time.time() re ...

  7. linux学习记录.2.hello world.c

    安装vim,指令: sudo apt-get install vim 建立一个子目录WorkSpace,指令 mkdir WorkSpace 转到该目录下,指令 cd WorkSpace 新建c文件, ...

  8. 阿里分布式开源框架DUBBO 入门+ 进阶+ 项目实战视频教程

    史诗级Java/JavaWeb学习资源免费分享 欢迎关注我的微信公众号:"Java面试通关手册"(坚持原创,分享各种Java学习资源,面试题,优质文章,以及企业级Java实战项目回 ...

  9. SSL证书生成方法【转】

    转自 SSL证书生成方法 - fyang的专栏 - 博客频道 - CSDN.NEThttp://blog.csdn.net/fyang2007/article/details/6180361 一般情况 ...

  10. 516.Longest Palindromic subsequence---dp

    题目链接:https://leetcode.com/problems/longest-palindromic-subsequence/description/ 题目大意:找出最长回文子序列(不连续), ...