jzoj5234. 【NOIP2017模拟8.7A组】外星人的路径

11 篇文章 0 订阅
6 篇文章 0 订阅

Description

有一个外星人控制了你的大脑。一开始你处于原点(0,0)。外星人有一个由(R,U,D,L)组成的长度为M 的操作序列,分别代表(右,上,下,左)。
平面上有N 个关键点,每当外星人给出一个操作,你需要在这个方向上找到最近的一个关键点,并走到那个点上。保证输入数据合法。
这里写图片描述
上图为第三个样例的图示。

Input

第一行两个整数N,M。
接下来N 行,每行两个整数xi,yi,代表第i 个点的坐标。
接下来一行,一个长度为M 的字符串,代表操作序列。

Output

一行两个整数,代表最终你所处的位置。

Sample Input

输入1:
4 4
1 1
1 0
0 1
0 0
RULD

输入2:
7 5
0 0
0 1
0 -1
1 0
1 -1
3 0
3 -1
DRRUD

输入3:
10 6
0 0
1 1
2 1
0 2
-1 2
-1 3
2 3
2 4
4 3
2 -1
ULURDL

Sample Output

输出1:
0 0

输出2:
3 -1

输出3:
1 1

Data Constraint

56%的数据,N≤3000,M≤3000。
100%的数据,N,M≤100000,xi,yi≤200000。
想法:
我们只需要把每个点4个操作后分别的终点求出来就好
把所有点以横坐标为第一关键字排个序,以纵坐标第二关键字排一次序,记录,再以纵坐标为第一,横坐标为第二关键字排序,
然后两种方法:
第一种:直接查询以这个方向遇到的第一个点,用各种数组记录
第二种:设当前点为(x,y)以上方向为例,利用以横坐标第一关键字排序的数组,找出x坐标与当前点相等的范围,然后二分比y大且最小的点

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值