cf 1275F Radio Stations
题目链接 题目大意:有n个地方需要通讯,每个地方可以用两种基站里面的其中一种,有p种基站, 每种基站能够接收的频率在l到r范围内,最大的频率是M,有m对基站会相互干扰,所以不能同时选。 要求一种频率,使得每个地方都能通讯。 输出使用的频率和哪几个基站。 题目分析: 这题明显可以用2sat来做,但是我们知道只有在确定频率的基础上我们才可以建图。 所以最朴素的做法就是枚举各种频率,然后每次建图判断,这样做的时间复杂度比较高。 这题有一个巧妙的方法,我们可以把频率也看成一个点,这样就不用重复建图了。 比如第i个点的两个对立面,频率大于等于i和频率小于i。 那么我们可以这么建图: 频率小于i可以推出频率小于i+1 频率大于等于i+1,可以推出频率大于等于i 某个基站的频率范围是l到r,那么我们可以建边。 频率小于l推出这个基站不选 这个基站选了可以推出频率大于等于l 频率大于等于r+1可以推出这个基站不选 这个基站选了可以推出频率小于r+1。 再加上本身2sat的建图,边的数量大概在400万左右,可以承受。 最后找答案,也就是频率,也有一定的技巧。 我们需要先计算出哪些小于i的频率选了。 因为我们知道频率小于i,可以推出频率小于i+1,也可以推出频率小于i+2,。。。。 所以肯定有一段连续的频率小于某些值的被选了。 所以我们可以倒着枚举,因为频率小于M+1是一定选了的。 时间复杂度是线性的