其他分享
首页 > 其他分享> > AT3949 [AGC022D] Shopping 题解

AT3949 [AGC022D] Shopping 题解

作者:互联网

Atcoder
Luogu

P.S.

和 @Lillia 从 8:00 嘴巴到 8:45,总算嘴巴出来了个做法。

Solution.

首先,画一张 时间-位置 图。
image
如果有这样的商店,容易证明它搭乘向左的列车肯定不劣,我们定义它为左箭头。
image
同理,左边也会有只能向右的箭头,定义为右箭头。
当然还有不左不右的箭头,又需要分类。
有种商店,定义为同向商店,下车和上车列车前进方向相同。
image
当然还有不同向商店(如图
image
有一些比较显然的性质:

然后把同向商店去掉后,不同向商店本质上来说就是一个既可以当作左箭头又可以当作右箭头的箭头,称它为双向箭头。
原问题转化成了有很多箭头,需要把它划分成尽量少个存在合法排序方式的子集。
一个序列合法当且仅当如果存在,每个箭头的后继相对于当前这个箭头的方向就是这个箭头指向的方向。
不就是在每个箭头上往那边前进找到下一个嘛。。。
然后发现这个双向箭头很毒瘤。

考虑

标签:列车,Shopping,定义,商店,题解,AT3949,箭头,左边,序列
来源: https://www.cnblogs.com/pealfrog/p/15378113.html