【清华集训】小Y和地铁

图已挂,前往luogu

题目:

小 $\rm Y$ 是一个爱好旅行的 $\rm OIer$。一天,她来到了一个新的城市。因为不熟悉那里的交通系统,她选择了坐地铁。
她发现每条地铁线路能够当作平面上的一条曲线,不一样线路的交点处必定会设有换乘站。经过调查得知,没有线路是环线,也没有线路与自身相交。任意两条不一样的线路只会在若干个点上相交,没有重合的部分,且没有三线共点的状况。即,如图所示的状况都是不存在的:数组

小 $\rm Y$ 坐着地铁 $0$ 号线,路上依次通过了 $n$ 个换乘站。她记下了每一个换乘站能够换乘的线路编号,发现每条线路与她所乘坐的线路最多只有 $2$ 个换乘站。如今小 $\rm Y$ 想知道,除掉她通过的换乘站之外,这个城市里最少有几个换乘站。只有你告诉她正确的答案,她才会答应下次带你去玩呢。优化

$n\le 44$spa

分析:

首先,咱们先考虑最暴力的方法:3d

咱们发现,对于两个换乘站,共有$8$种状况:blog

考虑咱们对每组换乘站进行枚举,再加上$O(n)$的暴力找交点数,时间复杂度为$O(n8^\left(\frac{n}{2}\right))$,面对$n\le 44$的数据,显然会$\rm TLE$。模板

指望得分$\rm 10$。class

考虑寻找这$8$种状况有没有重复。搜索

咱们发现,对于第一行的两种状况,放到一块儿,会是这样的:方法

对于这种状况,因为这两条线产生了一个彻底包住$0$号线的环,咱们发现对于每个其余的线,要么不和这两条线产生交点,要么对这两条线每条都产生一个交点。im

因此,无论朝左仍是朝右,结果都是同样的,咱们只须要枚举朝上或朝下便可。

时间复杂度$O(n4^\left(\frac{n}{2}\right))$,指望得分$40$分。

再考虑,能不能继续减小状况数。

好比,咱们把第一列的两种放到一块儿。

这张图也构成了环,可是这个环并无能把0号线包住,可是这个环把0号线右边的全部点包住了,也就是在第一个红点右边的全部点是不会受到这两个的选择的影响的。

而后再来看第一个红点左边的状况,若是你是按左端点从左往右搜索的,你会发现到这步的时候红点左边已经搜索完了,即在左边会进出环的点已经所有决定了,而又由于不会对右边形成影响,因此咱们能够贪心地取这两条环产生交点的最小值。

同理,剩下的也能够这样处理。

时间复杂度$O(n2^\left(\frac{n}{2}\right))$。

指望得分$\rm 80$分。

搜索的时间复杂度看上去已经很优了,因此咱们考虑能不能优化找交点的时间复杂度。

考虑咱们从左往搜索,用$a.l,a.r$表示$a$线路的左端点右端点,若只考虑同向,由于$a.l \lt a.r,\;b.l \lt b.r,\; a.l \lt b.l$则有三种状况:

$$1)\quad a.l\lt b.l\lt b.r \lt a.r$$

$$2)\quad a.l\lt a.r\lt b.l \lt b.r$$

$$3)\quad a.l\lt b.l \lt a.r \lt b.r$$

显然,只有状况$3$是相交的。

咱们发现只有$b.l\lt a.r\lt b.r$咱们才须要统计。

是否是很熟悉?你可使用树状数组来进行统计。

每一个右端点标记$1$,而后求$[b.l,b.r]$的和便可。

对于朝向问题,显然左端点的朝向不影响,右端点只有同向才会相交,能够自行画图,这边不做演示。

至于代码,因为写的时候比较早,太丑就不放出来了。

时间复杂度$O(2^{\left(\frac{n}{2}\right)}\log n)$,能够$\rm AC$。

有问题请留言。

后记:

$\rm hyc\;dalao$说这题是$\rm dfs$模板题,实在太强了。

相关文章
相关标签/搜索