不久前的Grakn Forces 2020上,我想出了这个方法,我本来以为这个模型不会很常见。然而,今天的CodeForces #679 Div2上,我第二次碰到了可以用这个模型解决的问题,气人的是,这次我却在代码细节上写挂了,最终掉分,愤而决定当作模板记录下来,以免再犯。

问题

个有序对
,对于每个有序对,可以选择将
加入集合
或将
加入集合
,试最小化
。(规定

算法

首先注意到对于

,如果在
的同时有
,那么就可以舍弃
。于是可以将有序对以
为第一关键词、
为第二关键词排序,这样可以保证
是随
单调不减的:

显然,

应该随
单调减。如何保证呢?注意到最后一个有序对肯定要保留,所以我们只需要从后往前遍历,划掉破坏
单调性的元素即可:

当然,在编程中,删除数组中的元素还是太浪费时间了,我们转而把无需删除的有序对加入一个新的数组。只不过,因为我们是从后往前遍历,这样会导致顺序颠倒过来。

这时我们发现,如果我们选了某个

,那么可以无代价地选择它

下方的所有

;如果我们选了某个
,那么可以无代价地选择它

上方的所有

。相当于,我们只需要选择左边的

开头和右边的结尾,而且它们应该是相邻的:

这样一来,我们一共就只有

种选法了(
为新数组的长度),把原来的指数级问题降成了线性。

代码

int minsum(vector<pair<int, int>> &V)
{if (V.empty())return 0;sort(V.begin(), V.end());vector<pair<int, int>> U{V[V.size() - 1]};for (int i = V.size() - 2; i >= 0; --i)if (V[i].second > U.back().second)U.push_back(V[i]);int mi = min(U[0].first, U.back().second);for (int i = 0; i < U.size() - 1; ++i)mi = min(mi, U[i].second + U[i + 1].first);return mi;
}

例题

CF1408D:通过计算,可求得每个强盗向上躲过探照灯需走

格,向右躲过探照灯需走
格,记为
。现在要让所有强盗向上、向右各走若干格躲过所有探照灯,也即选若干个
求最大值,选剩余的
求最大值,将这两个最大值的和最小化。这完美符合刚刚那个模型

(当然,因为这模型就是从这个题来的-w-)

CF1435C:我们可以得到

个数,每组各选择一个,让选择的数的极差最小。可以固定其中一组,对于这组数中的每一个
,都把其余各组中最大的
的数和最小的
的数找出来,分别求它们与
的差(如果没有满足某个条件的数,记对应的差为

INF)。这相当于是向左扩展向右扩展。然后套模型。这样我们算出了选固定组每一个数时的最小极差,求一个最小值即可。

集合覆盖模型例题_在打CodeForces的过程中发现的一个小模型相关推荐

  1. unity 批量导入模型工具_零基础的Unity图形学笔记3:使用多模型UV与优化模型导出...

    前文所说,贴图多UV,直接命名对应贴图就可以. 模型的多套UV,则需要在3DMAX里编辑. 这篇文章主要解决两个问题: 如何正确使用多模型UV? 从3DMAX导出,到shader使用 如何优化模型导出 ...

  2. ssas表格模型 权限控制_如何在SQL Server 2016中自动执行SSAS表格模型处理

    ssas表格模型 权限控制 There are many ways to process your SSAS Tabular Model. This can be achieved in SSIS u ...

  3. c#生成静态库_在 Blazor WebAssembly 静态网站中部署ML.NET机器学习模型

    目前世面上有许多方法来部署机器学习模型.最常见的方法是通过 API 或 serverless functions 将模型公开为 Web 服务.将模型部署为 Web 服务时,其中一个注意事项是延迟和性能 ...

  4. [转载] python实现语义分割_使用Keras实现深度学习中的一些语义分割模型

    参考链接: Keras中的深度学习-数据预处理 Keras-Sematic-Segmentation 使用Keras实现深度学习中的一些语义分割模型. 配置 tensorflow 1.13.1+ten ...

  5. 两个集合相等的例题_集合的相等答案

    分析: 由 题设知对于集合 N 中的函数 f ( x ) 的定义域为 [a , b ] , 对应的 f ( x ) 的值域为 N=M=[a , b ] . 由函数 , 知 f ( x ) 是增函数. ...

  6. tensorflow打印模型结构_社区分享 | 详解 TensorFlow 中 Placement 的最后一道防线 — Placer 算法...

    本文作者王思宇,阿里巴巴算法专家,从事深度学习算法平台建设,TensorFlow 分布式架构设计与大规模分布式性能优化工作,开源 TensorFlow 项目 contributor. 本文转自:互联网 ...

  7. matlibplot 一张图画多个曲线_从一张风景照中就学会的SinGAN模型,究竟是什么神操作?| ICCV 2019最佳论文...

    作者 | 王红成,中国海洋大学-信息科学与工程学院-计算机技术-计算机视觉方向研究生,研二在读,目前专注于生成对抗网络的研究 编辑 | Jane 出品 | AI科技大本营(ID:rgznai100) ...

  8. python利用集合的无重复性_利用Python程序完成ABAQUS中的一些重复性操作

    对于建立过大型的ABAQUS分析模型的同学们,肯定会面对繁琐的重复性建模过程.比如对上百个点施加集中力,比如建立几百个耦合约束.这些重复性操作,如果使用cae操作的话,不仅费时,而且极其容易出错. 利 ...

  9. 航空模型手工制作_一次性筷子飞机模型手工制作过程

    今天再来学习一个一次性筷子的变废为宝教案,教程比较简单.取材也方便,十分适合初学的手工爱好者.这次要用一次性筷子制作的是一个飞机模型,先收集到足够多的筷子,洗干净晾干后,再按下面小编为小伙伴们提供的图 ...

最新文章

  1. LWIP之IP层实现(转载)
  2. java servlet jsp javabean关系图_Servlet+JSP+JavaBean开发模式(MVC)介绍
  3. java关闭applet_java – Applet会自动关闭
  4. sql server 查看表、视图、触发器、存储过程等组成sql查询语句
  5. 卡巴斯基离线病毒库升级办法
  6. Vue2.0 Vue组件库
  7. Twaver-HTML5基础学习(7)Layer图层元素
  8. 光纤交换机配置zone
  9. 任正非:人感知到自己的渺小,行为才开始伟大
  10. 需求分析和常见的需求问题解决
  11. 安东尼:为来欧洲踢球做出了牺牲,穿上曼联球衣让我很满足
  12. python数据可视化创建_【Python数据可视化】创建3D可视化图表
  13. Po.et正式推出为出版商打造的API层应用—Frost
  14. ATLAS什么时候增加服务器,Atlas新手怎么选服务器_Atlas新手服务器选择技巧_快吧单机游戏...
  15. 人常见的思维盲区有哪些?看懂这个你会少犯一半错误
  16. EBS功能_WIP外协工单测试
  17. 杰理之杰理之家,播歌声音小,杰理之家调EQ声音小【篇】
  18. k8s之pod资源管理
  19. win7 设置WIFI热点
  20. 我今天写了一代可执行可执行文件的代码东东,请参详

热门文章

  1. 基于SOA的图书商城系统分析
  2. plSql读取Oracle数据库中文乱码
  3. 数据的表示方法和运算方法
  4. 软件测试准备(摘要)
  5. 用心整理,尽量最全,一套目标检测、卷积神经网络和OpenCV学习资料(教程/PPT/代码)...
  6. linux如何添加默认路由表_linux 添加静态路由
  7. 「Python基础知识」Python的split方法如何使用
  8. 自动生成代码:TensorFlow官方工具TF-Coder已开源
  9. 笔记 | 《机器学习》中计算学习理论(上)
  10. 收藏 | 机器学习中常用的5种回归损失函数