首页 > 其他分享 >CF1774G Segment Covering

CF1774G Segment Covering

时间:2024-05-26 19:55:53浏览次数:27  
标签:Covering CF1774G 我们 leq 端点 区间 Segment 线段 DP

题面传送门

非常好题目!

首先我们考虑两条线段 \([l_1,r_1],[l_2,r_2]\) 满足 \(l_1\leq l_2\leq r_2\leq r_1\),如果大的线段选了,那么小的是否选择都无所谓,这样贡献就抵消了。因此,我们可以把包含其它线段的线段去掉,就剩下了一堆不交的线段。

然后考虑一个单次 \(O(n)\) 的 DP 做法:设从前往后走到第 \(i\) 条线段的贡献系数为 \(f_i\),对于后面的与 \(i\) 有交的线段 \(j\),都会使 \(f_j\) 减去 \(f_i\),最后 \(f_y\) 处即为答案。

这个 DP 的形式非常简单。我们考虑用一个区间 \([l,r]\) 以及一个值 \(w\) 表示整一个 DP 状态,表示现在在转移 \(l\),整个 \([l,r]\) 区间内的值都是 \(w\),其余位置没有值。从后面的过程可以看出这样假设是合理的。

初始的时候有 \(l=r=x,w=-1\),然后当我们要转移 \(l\) 的时候,我们找到 \(l\) 能转移到的最右边的点 \(j\),此时显然有 \(j>r\),然后将 \([l+1,j]\) 区间内全部减去 \(w\)。这时 \([l+1,r]\) 区间内的值就变成 \(0\) 了,\([r+1,j]\) 区间内的值变成了 \(-w\),于是可以继续按照这个状态转移。

这个状态的表示方法一个比较好的地方是两个端点几乎是独立的,我们只需要让两个端点分别跳到 \(\leq y\) 的最大端点,然后分类讨论:

  • 若 \(l,r\) 均不为 \(y\),则 \(y\) 处的值显然是 \(0\)。
  • 若 \(l,r\) 均为 \(y\),则说明中间至少有一个值没有被覆盖到,则答案也是 \(0\)。
  • 否则,\(l,r\) 中就恰好有一个为 \(y\),这时我们可以直接通过 \(l,r\) 跳的次数来判断值是 \(1\) 还是 \(-1\)。

因此我们只需要维护一个倍增即可,时间复杂度 \(O((n+q)\log n)\)。理论上可以通过并查集做到 \(O(n\alpha(a))\) 的说。

submission

标签:Covering,CF1774G,我们,leq,端点,区间,Segment,线段,DP
From: https://www.cnblogs.com/275307894a/p/18214196

相关文章

  • 基于Kaggle学习MONAI(三)2D-Segmentation例程代码详解1
    1简介         MONAI网站提供了2D分类/分割、3D分类/分割等例程代码如下图所示,通过学习例程代码,初学者能够尽快掌握MONAI框架,但是由于开源框架软件版本更新较快、各模块功能难以协调等原因,这些例程往往无法在Kaggle平台直接运行。本文对MONAI官网第二个例程,即2D分割......
  • A Simple Framework for Open-Vocabulary Segmentation and Detection
    郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布!ProceedingsoftheIEEE/CVFInternationalConferenceonComputerVision.2023. Abstract  1.Introduction 2.RelatedWork 3.Method3.1.BasicLossFormulation 3.2.BridgeTaskGap:Decou......
  • Mask DINO: Towards A Unified Transformer-based Framework for Object Detection an
    郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布!ProceedingsoftheIEEE/CVFConferenceonComputerVisionandPatternRecognition.2023. Abstract在本文中,我们提出了一个统一的对象检测和分割框架MaskDINO。MaskDINO通过添加一个支持所有图像分割任务(例如......
  • pg调整wal_segment_size(默认是16MB)大小
    环境:OS:Centos7DB:pg14pg默认的wal_segment_size是16MB,下面可以通过如下命令修改 1.关闭数据库systemctlstoppostgresql-14 2.修改wal默认大小[root@dsc1bin]#/usr/pgsql-14/bin/pg_resetwal--wal-segsize=64-D/opt/pg14/datapg_resetwal:error:cannotbeexec......
  • LangSegment:多语言(97种语言)的混合文本自动分词工具
    项目简介它是一个强大的多语言(97种语言)的混合文本自动分词工具。[中日英韩:已测试]主要用途:它非常适合各种TTS语音合成项目,多语种混合文本的前端推理,和预处理后端训练。它基于py3langid的扩展实现(>=python3.6)。LangSegmentItisamulti-lingual(97languages)textcon......
  • LangSegment:多语言(97种语言)的混合文本自动分词工具
    项目简介它是一个强大的多语言(97种语言)的混合文本自动分词工具。[中日英韩:已测试]主要用途:它非常适合各种TTS语音合成项目,多语种混合文本的前端推理,和预处理后端训练。它基于py3langid的扩展实现(>=python3.6)。LangSegmentItisamulti-lingual(97languages)textcon......
  • F. Equal XOR Segments
    原题链接题解1.如果能分成偶数个区间,那么一定能分为两个区间2.如果能分为奇数个区间,那么一定能分为三个区间3.能分为两个区间,说明区间异或和为\(0\)4.能分为三个区间,这三个区间分别为区间\(a,b,c\),则\(ab\)区间异或和为零,\(bc\)区间异或和为零code#include<bits/std......
  • Jumping Through Segments
    题目:链接:https://www.luogu.com.cn/problem/CF1907D大致思路:二分模拟关键点:①确定二分区间:最小值为第一次跳的左边界,最大值为连续两个线段的最远值(注意,应该有四种情况:左1减右1,左2减右1,左1减右2,左2减右2,取绝对值);②确定如何模拟:递推:假定跳跃长度≤k(mid),那么下一个最远就是ra+......
  • CF1774G Segment Covering 题解
    题目链接点击打开链接题目解法这么牛的题!!!我第一眼看到偶\(-\)奇想到的是LGV/xk有一堆线段的题先考虑有没有线段之间的特殊关系这道题中,如果有线段\(x\)包含线段\(y\),则线段\(x\)是无用的,因为如果选了\(x\),那么选不选\(y\)无所谓,因为是偶\(-\)奇,所以贡献抵消了......
  • 特性描述01、Segment Routing MPLS介绍
    SegmentRoutingMPLS介绍 定义段路由SR(SegmentRouting)是基于源路由理念而设计的在网络上转发数据包的一种协议。SegmentRoutingMPLS是指基于MPLS转发平面的SegmentRouting,下文简称为SegmentRouting。SegmentRouting将网络路径分成一个个段,并且为这些......