SCU 4445 Right turn
模拟。
每次找一下即将要遇到的那个点,这个数据范围可以暴力找,自己的写的时候二分了一下。如果步数大于$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的更多相关文章
- 模拟+贪心 SCU 4445 Right turn
题目传送门 /* 题意:从原点出发,四个方向,碰到一个点向右转,问多少次才能走出,若不能输出-1 模拟:碰到的点横坐标相等或纵坐标相等,然而要先满足碰到点最近, 当没有转向或走到之前走过的点结束循环. ...
- SCU 4445 Right turn(dfs)题解
思路:离散化之后,直接模拟就行,标记vis开三维 代码: #include<iostream> #include<algorithm> #include<cstdio&g ...
- SCU Right turn
Right turn frog is trapped in a maze. The maze is infinitely large and divided into grids. It also c ...
- 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 ...
- ACM:SCU 4437 Carries - 水题
SCU 4437 Carries Time Limit:0MS Memory Limit:0KB 64bit IO Format:%lld & %llu Practice ...
- ACM: SCU 4438 Censor - KMP
SCU 4438 Censor Time Limit:0MS Memory Limit:0KB 64bit IO Format:%lld & %llu Practice D ...
- ACM: SCU 4440 Rectangle - 暴力
SCU 4440 Rectangle Time Limit:0MS Memory Limit:0KB 64bit IO Format:%lld & %llu Practic ...
- webrtc进阶-信令篇-之三:信令、stun、turn、ice
webRTC支持点对点通讯,但是webRTC仍然需要服务端: . 协调通讯过程中客户端之间需要交换元数据, 如一个客户端找到另一个客户端以及通知另一个客户端开始通讯. . 需要处理NAT(网 ...
- HDU-4869 Turn the pokers
原题: Turn the pokers 思路:假设正面为0,反面为1.牌就像这样 000000....... .考虑到假如可以实现最终反面个数为m, 牌共n张, 则这n张排任取m个为反面 ...
随机推荐
- JS中client/offset/scroll等的宽高解析
原文地址:→传送门 window相关宽高属性 1. window.outerHeight (窗口的外层的高度) / window.outerWidth (窗口的外层的宽度) window.outerH ...
- 20155117 王震宇 2006-2007-2 《Java程序设计》第四周学习总结
教材学习内容总结 继承(inheritance) 继承是面向对象软件技术当中的一个概念.继承可以使得子类别具有父类别的各种属性和方法,避免了重复的行为定义.在子类别继承父类别的同时,可以重新定义某些属 ...
- HDU 1999 不可摸数 (模拟)
题目链接 Problem Description s(n)是正整数n的真因子之和,即小于n且整除n的因子和.例如s(12)=1+2+3+4+6=16.如果任何数m,s(m)都不等于n,则称n为不可摸数 ...
- C - K-inversions URAL - 1523 (dp + 线段树)
题目链接:https://cn.vjudge.net/contest/275079#problem/C 具体思路:我们可以分层的去建立,假设我们要找k层,我们可以先把满足1.2....k-1层的满足情 ...
- 设计模式之Composite
设计模式总共有23种模式这仅仅是为了一个目的:解耦+解耦+解耦...(高内聚低耦合满足开闭原则) Composite定义? 将对象以树形结构组织起来,以达成“部分-整体” 的层次结构. 想到Compo ...
- hibernate CasCade deleted object ould be re-saved by cascade
这个问题个人认为看你用的那种方式,如果是注解式的 比如: @ManyToMany(cascade={CascadeType.MERGE,CascadeType.REFRESH,CascadeType. ...
- java在CMD窗口执行程序的时候输入密码(隐藏一些敏感信息)
有时候我们需要从CMD窗口执行一些命令,有时候会输入一些敏感的信息,比如密码之类的东西,所以我们可以从控制台读取但是不希望别人看见我们的密码: import java.io.Console; /** ...
- C++ Class与Struct的区别
转自某楼层的回复http://bbs.csdn.net/topics/280085643 首先,讨论这个问题应该仅从语法上讨论,如果讨论不同人之间编程风格上的差异,那这个问题是没有答案的.毕竟不同的人 ...
- Linux内核中的Cache段
Linux内核中的Cache段 原文地址:http://blogold.chinaunix.net/u2/85263/showart_1743693.html 最近移植LEON3的内核时,了解了一些简 ...
- Ubuntu命令设置ip网关dns
本文系转载,介绍Ubuntu如何设置IP和网络来连接网络 如果是在虚拟机中使用Ubuntu,那么设置之前请先参照我的上一遍文章虚拟机Net方式设置连接外网中的网络设置部分,先设置好主机的网络,然后配置 ...