首页 > 其他分享 >CF1215F Radio Stations

CF1215F Radio Stations

时间:2024-02-10 16:44:37浏览次数:31  
标签:pre sec le 电站 Stations Radio CF1215F m2 m1

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

题意简述

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

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

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

\(n,m,m1,m2\le 4\times10^5\)。

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

分析

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

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

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

发现区间 \([l_i,r_i]\) 与区间 \([l_j,r_j]\) 无交当且仅当 \(r_i<l_j\) 或 \(r_j<l_i\)。而我们发现 \(l_j>r_i\) 的 \(j\) 是一段后缀,\(r_j<l_i\) 的 \(j\) 是一段前缀。

那么做法就呼之欲出了。使用前缀和优化建图(不会前缀和优化建图见 Riddle),每个前缀点 \(pre_i\) 连向以该点为右端点的电站的反点,每个后缀点 \(sec_i\) 连向以该点为左端点的电站的反点。根据定义有连边 \(pre_i\rightarrow pre_{i-1},sec_i\rightarrow sec_{i+1}\)。其次,对于每个点 \(i\),有连边 \(i\rightarrow pre_{l_i-1},i\rightarrow sec_{r_i+1}\),注意此时的 \(i\) 为 \(i\) 的正点。

code

标签:pre,sec,le,电站,Stations,Radio,CF1215F,m2,m1
From: https://www.cnblogs.com/dcytrl/p/18012910

相关文章

  • RadioListTile单选按钮组
    RadioListTile单选按钮组classRadioPageextendsStatefulWidget{constRadioPage({super.key});@overrideState<RadioPage>createState()=>_RadioPageState();}class_RadioPageStateextendsState<RadioPage>{intsex=1;_radioChang......
  • input标签不同的type属性值:password、text、checkbox、button、radio
    input标签用于搜集用户信息根据不同的type属性值,输入字段拥有很多形式。输入字段可以是文本字段、复选框、掩码后的文本控件、单选按钮、按钮等等。type属性:button:定义可点击的按钮checkbox:定义复选框file:定义输入字段和“浏览”按钮hidden:定义隐藏的输入字段。image:定......
  • Layui select实现赋值和主动触发选择时间,及radio实现可取消
    Layuiselect赋值,并主动触发选择事件//Layuiselect赋值,并主动触发选择事件//Input:selectId:ID选择器,selectFilter:lay-filter名称,value:需要的赋值,text:显示文本值functionsetSelect(selectId,selectFilter,value,text){//赋值$(selectId).find("option[va......
  • Radio单选按钮组
    Radio单选按钮组classRadioPageextendsStatefulWidget{constRadioPage({super.key});@overrideState<RadioPage>createState()=>_RadioPageState();}class_RadioPageStateextendsState<RadioPage>{intsex=1;_radioChange(value)......
  • Gradio:快速构建你的webApp
    1.什么是Gradio如果你了解web开发,一定会知道开发一款webApp需要涉及很多技术栈:前端:HTML+CSS+JS(可能会涉及不同的CSS框架和JS框架如jqueryVUEreact等)后端语言:如python/javaweb容器:如flask/tomcat如果你只会python,又不想重头学习上述技术,你要怎么办?据我所知,有两种解决方案:s......
  • gradio代码案例+效果图片
    直接上代码:importgradioasgrimportnumpyasnpimporttorchfromPILimportImagefromram.modelsimportram_plusfromramimportinference_ramasinferencefromramimportget_transformimporttime#加载模型m_start=time.time()device=torch.device......
  • 【愚公系列】2024年01月 WPF控件专题 RadioButton控件详解
    ......
  • C++ Qt开发:RadioButton单选框分组组件
    Qt是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍QRadioButton单选框组件以及与之交互的QButtonGroup类的常用方法及灵活运用。QRadioButton是Qt框架......
  • gnuradio笔记[1]-内嵌python代码块
    摘要在GNURadio中简单使用内嵌python代码块实现输出内容到文件.超链接解决无法编辑代码块内代码原理简介GNURadio简介[https://wiki.gnuradio.org/index.php?title=What_Is_GNU_Radio]GNURadioisafree&open-sourcesoftwaredevelopmenttoolkitthatprovidessig......
  • 解决GNU Radio的内嵌代码块无法打开代码编辑器
    摘要解决GNURadio的内嵌代码块无法打开编辑器的问题.通过修改py脚本实现使用VSCode编辑内嵌代码.问题描述环境:系统macOS13.5GNURadioCompanion3.10.8.0(Python3.10.13)代码块选择应用程序是空的选择应用程序是空的实现修改/Users/workspace/rad......