模拟。

每次找一下即将要遇到的那个点,这个数据范围可以暴力找,自己的写的时候二分了一下。如果步数大于$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. linux shell学习二

    参考:http://www.cnblogs.com/waitig/p/5531463.html Shell注释 Shell中的注释以“#”号开头,所有以“#”号开头的代码都会被解释器所忽略. 比如下面 ...

  2. gym100712 ACM Amman Collegiate Programming Contest

    非常水的手速赛,大部分题都是没有算法的.巨慢手速,老年思维.2个小时的时候看了下榜,和正常人差了3题(,最后还没写完跑去吃饭了.. A 水 Sort 比大小 /** @Date : 2017-09-0 ...

  3. POJ3061 Subsequence 尺取or二分

    Description A sequence of N positive integers (10 < N < 100 000), each of them less than or eq ...

  4. Ubuntu 14.04 安装Visual studio Code

    上一篇简单介绍了Ubuntu 14.04上如何创建.运行 hello world 程序. 这篇介绍Ubuntu 14.04如何安装Visual studio Code. 网上推荐的有通过Ubuntu ...

  5. 51nod1110 距离之和最小 V3

    基准时间限制:1 秒 空间限制:131072 KB 分值: 40  X轴上有N个点,每个点除了包括一个位置数据X[i],还包括一个权值W[i].该点到其他点的带权距离 = 实际距离 * 权值.求X轴上 ...

  6. CodeForces - 999C

    You are given a string ss consisting of nn lowercase Latin letters. Polycarp wants to remove exactly ...

  7. Oracle笔记之表空间

    Oracle中有一个表空间的概念,一个数据库可以有好几个表空间,表放在表空间下. 1. 创建表空间 创建表空间使用create tablespace命令: CREATE TABLESPACE foo_ ...

  8. Problem D. Berland Railroads Gym - 101967D (思维)

    题目链接:https://cn.vjudge.net/contest/274029#problem/D 题目大意:给你0-9每个数的个数,然后让你找出最大的数,满足的条件是任意三位相连的都能被三整除. ...

  9. 使用正则表达式匹配IP地址

    IP地址分为4段,以点号分隔.要对IP地址进行匹配,首先要对其进行分析,分成如下部分,分别进行匹配:   第一步:地址分析,正则初判 1.0-9 \d 进行匹配 2.10-99 [1-9]\d 进行匹 ...

  10. ../include/squid_md5.h:27:2: error: #error Cannot find OpenSSL MD5 headers【squid安装中】

    ../include/squid_md5.h:27:2: error: #error Cannot find OpenSSL MD5 headers yum install -y openssl* w ...