【JZOJ5234】外星人的路径
description
有一个外星人控制了你的大脑。一开始你处于原点(0,0)。外星人有一个由(R,U,D,L)组成的长度为M 的操作序列,分别代表(右,上,下,左)。
平面上有N 个关键点,每当外星人给出一个操作,你需要在这个方向上找到最近的一个关键点,并走到那个点上。保证输入数据合法。
上图为第三个样例的图示。
analysis
思路比较好想,虽说nnn很大,但是我们可以先排个序
a,ba,ba,b分别快排一次,aaa按横坐标升序排序,bbb则相反
如果为向上或向下,那么在aaa里二分找出当前点(快排前把(0,0)(0,0)(0,0)也丢进去)
找出当前点nownownow后,若为upupup,下一个点即为a[now+1]a[now+1]a[now+1]
为downdowndown,下一个点即为a[now−1]a[now-1]a[now−1]
题目保证数据合法,可以免了判断
左右就在bbb里二分找当前点,同理
时间复杂度O((n+m)log2n)O((n+m)log_2n)O((n+m)log2n)
code
vara,b:array[0..100000,0..2]of longint;n,m,i,j,l,r,mid,nowx,nowy:longint;ch:char;
procedure qsort1(l,r:longint);
vari,j,mid,mid1:longint;
begini:=l;j:=r;mid:=a[(l+r)shr 1,1];mid1:=a[(l+r)shr 1,2];repeatwhile (a[i,1]<mid)or(a[i,1]=mid)and(a[i,2]<mid1)do inc(i);while (a[j,1]>mid)or(a[j,1]=mid)and(a[j,2]>mid1)do dec(j);if i<=j thenbegina[0]:=a[i];a[i]:=a[j];a[j]:=a[0];inc(i);dec(j);end;until i>j;if l<j then qsort1(l,j);if i<r then qsort1(i,r);
end;
procedure qsort2(l,r:longint);
vari,j,mid,mid1:longint;
begini:=l;j:=r;mid:=b[(l+r)shr 1,2];mid1:=b[(l+r)shr 1,1];repeatwhile (b[i,2]<mid)or(b[i,2]=mid)and(b[i,1]<mid1)do inc(i);while (b[j,2]>mid)or(b[j,2]=mid)and(b[j,1]>mid1)do dec(j);if i<=j thenbeginb[0]:=b[i];b[i]:=b[j];b[j]:=b[0];inc(i);dec(j);end;until i>j;if l<j then qsort2(l,j);if i<r then qsort2(i,r);
end;
beginassign(input,'tratincice.in');reset(input);assign(output,'tratincice.out');rewrite(output);readln(n,m);for i:=1 to n dobeginfor j:=1 to 2 dobeginread(a[i,j]);b[i,j]:=a[i,j];end;readln;end;qsort1(1,n);qsort2(1,n);for i:=1 to m dobeginread(ch);if ch in['U','D'] thenbeginl:=1;r:=n;while l<=r dobeginmid:=(l+r)shr 1;if (a[mid,1]>nowx)or(a[mid,1]=nowx)and(a[mid,2]>nowy)thenr:=mid-1else l:=mid+1;end;if ch='U' thenbeginnowx:=a[r+1,1];nowy:=a[r+1,2];endelsebeginnowx:=a[r-1,1];nowy:=a[r-1,2];end;endelsebeginl:=1;r:=n;while l<=r dobeginmid:=(l+r)shr 1;if (b[mid,2]>nowy)or(b[mid,2]=nowy)and(b[mid,1]>nowx)thenr:=mid-1else l:=mid+1;end;if ch='R' thenbeginnowx:=b[r+1,1];nowy:=b[r+1,2];endelsebeginnowx:=b[r-1,1];nowy:=b[r-1,2];end;end;end;writeln(nowx,' ',nowy);close(input);close(output);
end.
【JZOJ5234】外星人的路径相关推荐
- Jzoj5234 外星人的路径
有一个外星人控制了你的大脑.一开始你处于原点(0,0).外星人有一个由(R,U,D,L)组成的长度为M 的操作序列,分别代表(右,上,下,左). 平面上有N 个关键点,每当外星人给出一个操作,你需要在 ...
- jzoj5234. 【NOIP2017模拟8.7A组】外星人的路径
Description 有一个外星人控制了你的大脑.一开始你处于原点(0,0).外星人有一个由(R,U,D,L)组成的长度为M 的操作序列,分别代表(右,上,下,左). 平面上有N 个关键点,每当外星 ...
- JZOJ 5234. 【NOIP2017模拟8.7A组】外星人的路径
Description 有一个外星人控制了你的大脑.一开始你处于原点(0,0).外星人有一个由(R,U,D,L)组成的长度为M 的操作序列,分别代表(右,上,下,左). 平面上有N 个关键点,每当外星 ...
- JZOJ.5234【NOIP2017模拟8.7】外星人的路径
Description 有一个外星人控制了你的大脑.一开始你处于原点(0,0).外星人有一个由(R,U,D,L)组成的长度为M 的操作序列,分别代表(右,上,下,左). 平面上有N 个关键点,每当外星 ...
- pytorch与keras_Keras vs PyTorch:如何通过迁移学习区分外星人与掠食者
pytorch与keras by Patryk Miziuła 通过PatrykMiziuła Keras vs PyTorch:如何通过迁移学习区分外星人与掠食者 (Keras vs PyTorch ...
- 马斯克要往火星轨道送跑车,在深空待10亿年,静候外星人
本文授权转自36氪 作者 | 梁风 SpaceX将要发射自己的重型火箭猎鹰,不知道是不是担心大家没有耐心等待了,马斯克放出一枚重磅炸弹:准备要将他自己的特斯拉Roadster跑车送上火星轨道. 确实够 ...
- rainmeter皮肤_关于雨滴桌面(rainmeter)中无界大神的仿WMP外星人播放器修改方案...
关于雨滴桌面(rainmeter)中无界大神的仿WMP外星人播放器修改方案 很多人都在用rainmeter雨滴桌面,因为它炫酷的外表和开源的内核.当然也有很多小白想要入坑尝试一下这款软件.那么本人今天 ...
- Natural Sea Beauty以色列护肤品NSB外星人面膜,为肌肤赋予能量
面对一大拨的熬夜党,问一个灵魂方面的问题:你有多久没有在11点前入睡了?也许熬夜党们一直坚守着"夜越深,自己越是自由"的信念,可是,第二天早上和熊猫同款的眼袋衰衰地告诉我们,熬夜这 ...
- 解决方案:macOS Mojave下Pycharm运行pygame无法加载外星人游戏图片以及无法修改颜色
关于macOS Mojave下,Pycharm 运行pygame,加载不出外星人游戏图片以及无法修改颜色,解决方案如下: 1.官网升级Python3.7.2,Python Releases for ...
最新文章
- VR/AR会是微信后马化腾进军的战场吗
- 使用Java打印字符串表格(中英文内容不乱)
- boost::fusion::fused_procedure用法的测试程序
- c#中的Form.Show和Form.ShowDialog的区别
- java线程——什么是线程?
- 如何用计算机装手机系统,如何用手机usb重装电脑系统
- 关于拷贝常规数组、std::array和std::vector速度的一些测试
- 硬盘GPT分区与MBR分区的区别
- TR069 (CWMP协议即CPE广域网管理协议)
- Python OCR识别图片
- BZOJ 1062: [NOI2008]糖果雨(二维树状数组)
- 程序员 不经历风雨,怎么见彩虹
- 量子计算机采用超导技术吗,新发现的超导体材料可能是量子计算机的硅
- 鼠标滚动导航放大缩小
- iOS-bug·Failed to connect to github-production-release-asset-2e65be.s3.amazonaws.com port 443:
- 变电站ZRR-9000综合自动化系统的应用
- 【已解决】Https请求报错:unable to find valid certification path to requested target
- 查看bpl 引用的dll_BPL与DLL
- 求5个整数的平均值用c语言,编写求一组整数的和与平均值的程序
- 例行升级的 16.1 寸大屏本 — MagicBook Pro 2020 测评