模拟。

每次找一下即将要遇到的那个点,这个数据范围可以暴力找,自己的写的时候二分了一下。如果步数大于$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. JQuery和Servlet来实现跨域请求

    在网上看到很多的JQuery跨域请求的文章,比较有意思.这里我发表一个Servlet与JQuery配置实现跨域的代码,供大家参考.不足之处请指教 原理:JavaScript的Ajax不可以跨域,但是可 ...

  2. C语言易错点

    C语言易错点 1.每个C语言程序中main函数是有且只有一个的. 2.算法可以没有输入,但必须要有输出. 3.在函数中不可以再定义函数. 4.break可用于循环结构和switch语句. 5.brea ...

  3. Vue笔记之模板语法

    插值 比较常用的就是插值,插值就是{{ foobar }}用两个大括号包起来的一个变量,显示的时候会将双大括号标签替换为这个变量的值. 基本的用法就是: <p>{{ message }}& ...

  4. php遍历路径——php经典实例

    php遍历路径——php经典实例 代码: <html> <head> <title>遍历目录</title> <meta charset=&quo ...

  5. JavaScript 判断手机端访问并跳转 redirect mobile

    假如你的手机端网站在 /m 目录下 (function(a,b){if(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer| ...

  6. layui利用jQuery设置下拉列表的值

    今天在利用jQuery动态设置下拉列表的值的时候确怎么也赋值不上去,其中用到了layui框架,源代码如下: $.post(contextPath+'/courseLibrary/getCourseBa ...

  7. ubuntu的su初始密码设置

    Ubuntu刚安装后,不能在terminal中运行su命令,因为root没有默认密码,需要手动设定. 以安装ubuntu时输入的用户名登陆,该用户在admin组中,有权限给root设定密码. 给roo ...

  8. Machine Learning系列--L0、L1、L2范数

    今天我们聊聊机器学习中出现的非常频繁的问题:过拟合与规则化.我们先简单的来理解下常用的L0.L1.L2和核范数规则化.最后聊下规则化项参数的选择问题.这里因为篇幅比较庞大,为了不吓到大家,我将这个五个 ...

  9. loadrunner 测试问题汇总

    1.关于Error -27791: Error -27790:Error -27740:        错误如下:        Action.c(198): Error -27791: Server ...

  10. 在Ubuntu上安装Redis MySQL MongoDB memcached Nginx

    1.安装Redis sudo apt-get install redis-server 2.安装MySQL sudo apt-get install mysql-server 3.安装MongoDB ...