AT_arc205_c [ARC205C] No Collision Moves 题解

目录

AT_arc205_c [ARC205C] No Collision Moves

题目描述

数轴上有 N N N 个人。

第 i i i 个人( 1 ≤ i ≤ N 1\le i\le N 1≤i≤N)初始时位于坐标 S i S_i Si,目标是最终移动到坐标 T i T_i Ti。保证 S 1 , S 2 , ... , S N , T 1 , T 2 , ... , T N S_1,S_2,\ldots,S_N,T_1,T_2,\ldots,T_N S1,S2,...,SN,T1,T2,...,TN 都互不相同。

你需要固定一个排列 P = ( P 1 , P 2 , ... , P N ) P=(P_1,P_2,\ldots,P_N) P=(P1,P2,...,PN),即对 ( 1 , 2 , ... , N ) (1,2,\ldots,N) (1,2,...,N) 的一种排列,并依次进行 N N N 次操作。在第 i i i 次操作( 1 ≤ i ≤ N 1\le i\le N 1≤i≤N)中,你将第 P i P_i Pi 人从坐标 S P i S_{P_i} SPi 沿着数轴的最短路径移动到坐标 T P i T_{P_i} TPi。但是,如果此移动路径上还有其他人,则会发生冲突。

请你判断是否存在一个 P P P,使得在操作过程中不会发生冲突。如果存在,给出一个可行的 P P P。

输入格式

输入按下述格式从标准输入中给出:

N N N
S 1 S_1 S1 T 1 T_1 T1
S 2 S_2 S2 T 2 T_2 T2
⋮ \vdots ⋮
S N S_N SN T N T_N TN

输出格式

如果不存在使得没有冲突的 P P P,输出 No

否则,输出 Yes,并在同一行输出一个可行的 P P P(即 P 1 P_1 P1 P 2 P_2 P2 ... \ldots ... P N P_N PN)。

如果有多个满足条件的 P P P,输出任意一种即可。

输入输出样例 #1

输入 #1

复制代码
4
1 3
2 4
7 5
8 10

输出 #1

复制代码
Yes
3 2 1 4

输入输出样例 #2

输入 #2

复制代码
2
1 3
4 2

输出 #2

复制代码
No

输入输出样例 #3

输入 #3

复制代码
5
19 17
1 10
9 14
3 11
8 13

输出 #3

复制代码
Yes
3 5 1 4 2

说明/提示

样例解释 1

如果 P = ( 3 , 2 , 1 , 4 ) P=(3,2,1,4) P=(3,2,1,4),则 N N N 次操作依次如下:

  • 第 1 次操作:第 3 个人从坐标 7 7 7 移动到 5 5 5,其余三人还在 1 , 2 , 8 1,2,8 1,2,8,无冲突。
  • 第 2 次操作:第 2 个人从坐标 2 2 2 移动到 4 4 4,其余三人还在 1 , 5 , 8 1,5,8 1,5,8,无冲突。
  • 第 3 次操作:第 1 个人从坐标 1 1 1 移动到 3 3 3,其余三人还在 4 , 5 , 8 4,5,8 4,5,8,无冲突。
  • 第 4 次操作:第 4 个人从坐标 8 8 8 移动到 10 10 10,其余三人还在 3 , 4 , 5 3,4,5 3,4,5,无冲突。

因此,输出 P = ( 3 , 2 , 1 , 4 ) P=(3,2,1,4) P=(3,2,1,4) 即可。

其它可行答案包括 P = ( 4 , 3 , 2 , 1 ) , ( 2 , 1 , 3 , 4 ) P=(4,3,2,1),(2,1,3,4) P=(4,3,2,1),(2,1,3,4) 等。

样例解释 2

不存在使得不会发生冲突的 P P P。因此输出 No

数据范围

  • 1 ≤ N ≤ 2 × 10 5 1\le N\le 2\times 10^5 1≤N≤2×105
  • 1 ≤ S i , T i ≤ 10 9 1\le S_i, T_i \le 10^9 1≤Si,Ti≤109
  • S 1 , S 2 , ... , S N , T 1 , T 2 , ... , T N S_1,S_2,\ldots,S_N,T_1,T_2,\ldots,T_N S1,S2,...,SN,T1,T2,...,TN 均互不相同。
  • 所有输入值均为整数。

由 ChatGPT 5 翻译

过程

因为所有人的起点和终点是都不重复的,如果起点进行升序排序,然后移动左边,在移动右边,路径不会因为交叉冲突。

而且题解没有无解情况,样例所有 No 因为路径交叉排序还是冲突的,所以需要按起点排序。

所以我们得出结论。

把所有人按起点坐标从小到大排序,就是合法答案。

复杂度大约 O ( n log ⁡ n ) O(n\log n) O(nlogn)。

相关推荐
Yzzz-F2 小时前
Problem - 1114C - Codeforces[勒让德公式]
算法
MLGDOU2 小时前
【Qt开发】信号与槽
开发语言·数据库·qt
木井巳2 小时前
【笔试强训】Day1
java·算法
风萧萧19992 小时前
Milvus Java 快速入门
java·开发语言·milvus
leiming62 小时前
巧用 FreeRTOS 任务通知作“邮箱”:NeoPixel 灯环控制实战
java·前端·算法
老四啊laosi2 小时前
[双指针] 4. 力扣--盛最多水的容器
算法·leetcode·装水最多的容器
wanderist.2 小时前
高维矩阵的压维存储和高维差分
c++·算法·蓝桥杯
迈巴赫车主2 小时前
蓝桥杯192.等差数列java
java·数据结构·算法·职场和发展·蓝桥杯
chase。2 小时前
【学习笔记】从经典算法到通用神经运动规划器
笔记·学习·算法