CF1215F Radio Stations

一种自认为比较好想、好理解、好写的做法。

题意简述

n 个电站,频率范围是 li,ri(1lirim),有 m1 条限制形如 x,y,表示 x,y 电站至少选一个;同时有 m2 条限制形如 x,y,表示 x,y 电站至多选一个;同时要满足选出的电站的频率范围有交。求解的存在性。

输入格式:第一行四个整数 m1,n,m,m2,接下来 m1 行描述限制,接下来 n 行描述频率范围,接下来 m2 行描述限制。

输出格式:若无解输出 -1,若有解,第一行分别输出选出电站数量 k 和选出的电站的频率范围的交集中的任意一个整数元素 f,第二行以任意顺序输出选出的电站编号。

n,m,m1,m24×105

备注:本文中的 n,m,m1,m2 分别代表了原题的 p,M,n,m

分析

看到这种限制立即想到 2-SAT。

m1+m2 条限制就是纯 2-SAT 板子,不再赘述。

考虑怎么处理区间有交的问题,发现这个限制相当于我们不能选两个无交的区间,但是暴力两两之间连边是 O(n2) 的。

发现区间 [li,ri] 与区间 [lj,rj] 无交当且仅当 ri<ljrj<li。而我们发现 lj>rij 是一段后缀,rj<lij 是一段前缀。

那么做法就呼之欲出了。使用前缀和优化建图(不会前缀和优化建图见 Riddle),每个前缀点 prei 连向以该点为右端点的电站的反点,每个后缀点 seci 连向以该点为左端点的电站的反点。根据定义有连边 preiprei1,seciseci+1。其次,对于每个点 i,有连边 ipreli1,isecri+1,注意此时的 ii 的正点。

code

作者:dcytrl

出处:https://www.cnblogs.com/dcytrl/p/18012910

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   dcytrl  阅读(5)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
more_horiz
keyboard_arrow_up dark_mode palette
选择主题
点击右上角即可分享
微信分享提示