金鱼草

news/2025/2/23 15:17:29/文章来源:https://www.cnblogs.com/binbin200811/p/18732180

金鱼草

\(m\) 个区间,求是否存在某些区间的并集是否等于查询区间?

\(1\leq l,r\leq n\leq 5\times 10^5\)\(1\leq m,q\leq 5\times 10^5\)

思路

对于一个查询 \([l',r']\) 而言,可能对其产生贡献的区间满足 \([l,r]\subseteq [l',r']\)

一个简单的想法是,查询区间与集合区间按 \(r\) 升序排序,集合区间对 \([l,r]\)\(\max(a_i,l)\)\(a_i\) 表示的就是覆盖 \(i\)\(l\) 最大的区间;查询时查 \([l',r']\) 中的最小 \(a_i\)。如果 \(a_i\) 小于 \(l'\),证明有一个点只能选择 \(l<l'\) 的区间覆盖,不满足要求。否则都是可行的。

线段树维护,复杂度 \(O(n\log n)\)

CODE

#include<bits/stdc++.h>
using namespace std;#define pii pair<int,int>
#define fi first
#define se secondconst int maxn=5e5+5;int n,m,q;
int l[maxn],r[maxn],ans[maxn];vector<int>chg[maxn],qry[maxn];namespace linetree
{#define lch(p) p*2#define rch(p) p*2+1struct treenode{pii mi;int tagmi;}tr[maxn*4];inline void change(int p,int l,int r,int lx,int rx,int val);inline void pushup(int p){tr[p].mi={1e9,1e9};tr[p].mi.fi=min(tr[lch(p)].mi.fi,tr[rch(p)].mi.fi);if(tr[lch(p)].mi.fi!=tr[p].mi.fi) tr[p].mi.se=min(tr[p].mi.se,tr[lch(p)].mi.fi);if(tr[lch(p)].mi.se!=tr[p].mi.se) tr[p].mi.se=min(tr[p].mi.se,tr[lch(p)].mi.se);if(tr[rch(p)].mi.fi!=tr[p].mi.fi) tr[p].mi.se=min(tr[p].mi.se,tr[rch(p)].mi.fi);if(tr[rch(p)].mi.fi!=tr[p].mi.se) tr[p].mi.se=min(tr[p].mi.se,tr[rch(p)].mi.se);}inline void pushdown(int p,int l,int r){int mid=(l+r)>>1;if(tr[p].tagmi==0) return ;change(lch(p),l,mid,l,mid,tr[p].tagmi);change(rch(p),mid+1,r,mid+1,r,tr[p].tagmi);tr[p].tagmi=0;}inline void build(int p,int l,int r){if(l==r){tr[p].mi.fi=0;tr[p].mi.se=1e9;return ;}int mid=(l+r)>>1;build(lch(p),l,mid),build(rch(p),mid+1,r);pushup(p);}inline void change(int p,int l,int r,int lx,int rx,int val){if(r<lx||l>rx||tr[p].mi.fi>=val) return ;if(lx<=l&&r<=rx){if(tr[p].mi.fi<val&&val<tr[p].mi.se){tr[p].mi.fi=val;tr[p].tagmi=val;return ;}}pushdown(p,l,r);int mid=(l+r)>>1;change(lch(p),l,mid,lx,rx,val),change(rch(p),mid+1,r,lx,rx,val);pushup(p);}inline int qry(int p,int l,int r,int lx,int rx){if(r<lx||l>rx) return 1e9;if(lx<=l&&r<=rx) return tr[p].mi.fi;pushdown(p,l,r);int mid=(l+r)>>1;return min(qry(lch(p),l,mid,lx,rx),qry(rch(p),mid+1,r,lx,rx));}#undef lch#undef rch
}int main()
{freopen("snapdragon.in","r",stdin);freopen("snapdragon.out","w",stdout);scanf("%d%d%d",&n,&m,&q);for(int i=1;i<=m;i++){int l,r;scanf("%d%d",&l,&r);chg[r].emplace_back(l);}for(int i=1;i<=q;i++){scanf("%d%d",&l[i],&r[i]);qry[r[i]].emplace_back(i);}linetree::build(1,1,n);for(int i=1;i<=n;i++){for(auto l:chg[i])linetree::change(1,1,n,l,i,l);for(auto k:qry[i])ans[k]=linetree::qry(1,1,n,l[k],r[k]);}for(int i=1;i<=q;i++){// cerr<<ans[i]<<"\n";puts(ans[i]>=l[i]?"YES":"NO");}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/888394.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

哪吒探针V1:全新版安装

哪吒探针可以方便的帮助我们监控服务器性能。 本文为大家带来最新版v1的安装过程。 一、安装控制面板 运行一键安装脚本 curl -L https://gitee.com/naibahq/scripts/raw/main/install.sh -o nezha.sh && chmod +x nezha.sh && sudo CN=true ./nezha.sh这里我们…

分散的离开公司的跨国纠纷的广泛斯大林年的;;;反斯大林可能的司法法国vdnmfjioaspgrjosgmdlfbdfvb

法斯基返回南京了哦;角色的绿柠檬酸公司经理年女郎科技的风格vs的风俗哦管理呢诺夫斯基考虑过赛时T1正解没调出来。打暴力,第二个暴力二分挂了但第一档暴力都是第二档的数据,but我先判的第二档,so人麻了。 不管了反正都要退役了,就先**这样吧。__________________________…

FrameScan:cms漏洞检测框架

免责声明: 工具仅供安全研究与学习之用,若将工具做其他用途,由使用者承担全部法律及连带责任,作者及发布者不承担任何法律及连带责任。信息及工具收集于互联网,真实性及安全性自测!!!项目介绍 FrameScan是一款python3编写的简易的cms漏洞检测利用框架,支持漏洞检测与简…

fork打开VS Code

在 File → Preferences → Custom Commands 中,添加 Respository 命令。 #!/bin/bash# 已知的路径格式(Unix/Linux风格,其中/d表示D盘) unix_path=$PWD# 提取盘符(注意:这里假设盘符总是小写,并且紧跟在根斜杠后面) disk_letter="${unix_path:1:1}" disk_le…

Windows平台调试器原理与编写02.一般断点与反汇编引擎

https://www.bpsend.net/thread-256-1-2.html 一般断点(软件断点) 断点的尊严断的下来 走的过去 下次还来所有合格的断点都应该满足这3个要求 OD下断点实际是把指令的第一个字节改成了CC,当程序执行到CC的时候其实是抛了一个异常(EXCEPTION_BREAKPOINT),这个异常就会进入调试器…

输入搜索、分组展示选项、下拉选取,全局跳转页,el-select 实现 —— 后端数据处理代码,抛砖引玉展思路

详细前端代码写于上一篇:输入搜索、分组展示选项、下拉选取,el-select 实现:即输入关键字检索,返回分组选项,选取跳转到相应内容页 —— VUE项目-全局模糊检索 【效果图】:分组展示选项 =>【提供界面操作体验】 【mybatis】:多数据表抓取数据<select id="fin…

使用@SpringBootApplication注解

https://docs.spring.io/spring-boot/docs/2.0.x/reference/html/using-boot-using-springbootapplication-annotation.html许多Spring Boot开发人员希望他们的应用程序能够使用自动配置(auto-configuration)、组件扫描(component scan),并能够在其“应用程序类(applicat…

跨时钟域-单脉冲信号处理方法

逻辑设计中将所有同步元件(例如触发器和RAM等)使用相同时钟信号的部分称为时钟域。 退出亚稳态所需的时间被称为resolution Time(Tr)。 由于建立时间的违反,寄存器的输出电压可能是代表逻辑高、逻辑低,甚至更糟糕的是介于逻辑高和逻辑低之间的电压。 亚稳态是指触发器无法…

VMWare workstation pro 17 Windows11 中提示不能 支持Intel VT-x 虚拟化的问题终极解决方案

1. 在BIOS中开启虚拟化 2. 在系统功能里面取消hyper-v,虚拟机管理平台,沙盒功能, 虚拟机监控平台四个功能。 3. 在内核隔离里面取消内存隔离。 4. 运行下面的批处理。 5.重启后会有两次提示是否关闭vbs,两次按F3关闭,重启后一切正常。===================================…

PipeCAD Spooler 管道加工设计工具

PipeCAD Spooler是一款专门为管道预制厂商设计的管道深化加工设计和管理的工具。有以下一些功能:+ 直接导入PCF/IDF管道数据进行深化设计,大大提高设计效率; + 精确的材料统计,为材料采购提供准确数据; + 通过深化设计将管线拆分为易于车间加工的管段,提高加工质量,缩短…

『Python底层原理』--Python属性的工作原理

Python中的属性操作(如获取、设置和删除属性)是我们日常编程中非常常见的操作。 但你有没有想过,当我们写下obj.attr或obj.attr = value时,Python 内部究竟发生了什么? 本文将探讨Python属性的工作原理,并通过简单的代码示例来更好地理解这些概念。 1. 属性的基本操作 在…

deepseek最小模型安装部署

参考:DeepSeek本地部署详细指南访问ollama官网下载 这里我选择的是windows版本,因为本人设备能力有限,准备后续安装1.5B版本进行初步学习使用 安装好后,进入命令行执行ollama --version,检查是否安装成功,如出现下述信息,则说明安装成功下载并安装deepseek 1.5b模型部署…