守卫-贪心,线段处理

news/2025/11/12 8:50:47/文章来源:https://www.cnblogs.com/jiu-wei-lwj/p/19212300

P3634 守卫-贪心


P3634 守卫
这个线段处理值的学习

题意

给定区间及权值 \(0/1\),还有总共 \(1\) 的个数 \(k\) ,表示区间内是否有 \(1\) ,问一定为 \(1\) 的点有那些。

思路

很容易发现:

  1. \(0\) 的区间一定没有一。
  2. 去掉 \(0\) 之后长度刚好为 \(k\) 则一定有 \(1\)
  3. 值为 1 的区间长度恰好为 \(1\) 的时候,一定满足条件。
  4. 如果存在区间包含关系,保留小的区间。--小的区间外都可以为 \(0\)

考虑剩下的区间,容易发现如果在区间相交的地方存在 1 ,可以减少剩余可能存在 1 的区间数量。因为如果权值为 1 的区间内有 1 ,那剩余区间就是可能有 1 ,不符合要求。可以用来判断无解。

考虑 1 最少的情况,因为此时总和最小,如果不选某个点导致总和超过 \(k\) ,则必须选这个点,因为无论如何构造都不会有方式让总和小于 \(k\)

细节

  1. 1 最少的情况用线段覆盖来求。
  2. 保留的线段权值都为 1 ,且删去权值为 0 的线段。
  3. 判断是否无解要知道在这个点前面作最优解和这个点后面作最优解,所以对得到的最小情况要做一次前缀和和后缀和。

代码

#include <bits/stdc++.h>
#define int long long
using namespace std;
constexpr int maxn = 1e5+10;
constexpr int INF = 0x3f3f3f3f3f3f3f3f;typedef struct line
{int l,r;bool operator<(const line &o)const // l为第一关键字{return l!=o.l ? l<o.l : r<o.r;}
}line;int n,k,m;// 长,个数,区间数
int d[maxn];// 差分数组, 标记0的线段覆盖
int idx,cnt;// 线段数量,可能为1的点
line lin[maxn];// 线段-1
int pre[maxn],suf[maxn];// i左边可能为1的点的编号(cnt)
int sti[maxn];// 临时存储剩余的线段下标
int pre_cnt[maxn],suf_cnt[maxn];// 到某个线段最少要选取的点数(前后缀和)
int cov[maxn]; // cnt转坐标signed main()
{#ifndef ONLINE_JUDGEfreopen("cjdl.in","r",stdin);freopen("cjdl.out","w",stdout);#endif // ONLINE_JUDGEscanf("%lld%lld%lld",&n,&k,&m);for(int i=1,a,b,c ;i<=m;++i){scanf("%lld%lld%lld",&a,&b,&c);if(c==0){++d[a];// 差分标记--d[b+1];}else{++idx;lin[idx]={a,b};}}for(int i=1;i<=n;++i){// 还原差分,找剩下1的点d[i+1]+=d[i];if(!d[i]){pre[i]=suf[i]=++cnt;cov[cnt]=i;}}if (k == cnt)// 如果刚好满足,必须要判!{for (int i = 1; i <= cnt; i++){printf("%lld\n", cov[i]);}return 0;}for(int i=1;i<=n;++i)// 映射,似乎可以不用{if(!pre[i]){pre[i]=pre[i-1];}}for(int i=n;i>=1;--i){if(!suf[i]){suf[i]=suf[i+1];}}for(int i=1;i<=idx;++i){lin[i].l=suf[lin[i].l];// 跳过0的点lin[i].r=pre[lin[i].r];}sort(lin+1,lin+1+idx);// 现在排序for(int i=1;i<=idx;++i){if(lin[i].l>lin[i].r){continue;}while(sti[0] && lin[sti[sti[0]]].r>=lin[i].r)// 删除包含小线段的线段{--sti[0];}sti[++sti[0]]=i;}idx=sti[0];for(int i=1;i<=idx;++i){lin[i]=lin[sti[i]];// 挑完的线段}int rr=0;// 前缀最少要选取的点数for(int i=1;i<=idx;++i){if(lin[i].l>rr){pre_cnt[i]=pre_cnt[i-1]+1;rr=lin[i].r;}else{pre_cnt[i]=pre_cnt[i-1];}}int ll=INF;// 后缀for(int i=idx;i>=1;--i){if(lin[i].r<ll){suf_cnt[i]=suf_cnt[i+1]+1;ll=lin[i].l;}else{suf_cnt[i]=suf_cnt[i+1];}}bool flag=0;for(int i=1;i<=idx;++i){if(lin[i].l==lin[i].r)// 一个点必须要{flag=1;printf("%lld\n",cov[lin[i].l]);continue;}if(pre_cnt[i] != pre_cnt[i-1]+1) continue;// 不是有影响的线段右端点int pos=idx+1;int l=i+1,r=idx;// 二分找下一个线段(左端点刚好大) 可以用双指针更快while(l<=r){int mid=l+((r-l)>>1);if(lin[mid].l>lin[i].r-1){pos=mid;r=mid-1;}else{l=mid+1;}}if(pre_cnt[i]+suf_cnt[pos]>k)// 不选这个点无解{flag=1;printf("%lld\n",cov[lin[i].r]);}}if(!flag)// 没有选一个点{printf("-1\n");}return 0;
}

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

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

相关文章

2025年中央空调生产商排行榜单

2025年中央空调生产商排行榜单:美的领跑市场,国产品牌强势崛起随着消费升级和人们对居住舒适度要求的提高,中央空调市场在2025年呈现出新的竞争格局。本文基于权威市场调研数据,为您揭晓2025年中央空调生产商排行榜…

2025年口碑好的不锈钢衣柜优质厂家推荐榜单

2025年口碑好的不锈钢衣柜优质厂家推荐榜单不锈钢衣柜行业背景与市场趋势随着消费者对家居环保性和耐用性要求的不断提高,不锈钢衣柜市场近年来呈现快速增长态势。据中国家具行业协会2024年数据显示,不锈钢衣柜市场规…

Mysql常问面试题 - 教程

Mysql常问面试题 - 教程2025-11-12 08:46 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; fon…

2025年风管机实力厂家哪家权威

2025年风管机实力厂家权威推荐:美的风管机领跑行业随着现代家居装修理念的升级,风管机凭借其美观大方、节省空间、舒适度高等优势,正成为越来越多家庭的选择。在众多品牌中,美的风管机以其卓越的技术实力、完善的产…

2025年电脑维修常见故障渠道怎么选择

2025年电脑维修渠道选择指南:南天快修为您保驾护航随着2025年的到来,电脑维修行业也迎来了新的变革。面对市面上众多的维修渠道,如何选择靠谱的维修服务成为众多用户关心的问题。作为广州企晟科技有限公司旗下的专业…

2025冷库聚氨酯保温批发厂家推荐榜

2025冷库聚氨酯保温批发厂家推荐榜随着冷链物流行业的快速发展,冷库建设需求持续增长,聚氨酯保温材料作为冷库保温的核心材料,其质量和性能直接影响冷库的节能效果和使用寿命。以下是2025年值得推荐的冷库聚氨酯保温…

2025年质量好的恩施装修半包本地口碑榜

2025年质量好的恩施装修半包本地口碑榜 一、行业背景与市场趋势 近年来,恩施州装修市场呈现稳定增长态势。据《2024年湖北省家装行业报告》显示,恩施家装市场规模已达15.8亿元,同比增长12.3%,其中半包装修占比约…

深入解析:【鸿蒙进阶-7】鸿蒙与web混合开发

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

深入解析:牛客周赛 Round 111

深入解析:牛客周赛 Round 111pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco"…

2025年质量好的开天品牌口碑榜

2025年质量好的开天品牌口碑榜行业背景与市场趋势随着中国制造业向智能化、高端化转型,锻压设备行业正迎来新一轮发展机遇。据中国锻压协会最新统计数据显示,2024年我国锻压设备市场规模已达到580亿元,预计2025年将…

Python3 正则表达式

Python3 正则表达式正则表达式(Regular Expression)是一种用于匹配、查找和处理字符串的强大工具,通过特殊符号(元字符)定义匹配规则,广泛应用于文本检索、数据清洗、格式验证等场景。Python3 通过内置的re模块提…

2025年11月水飞蓟Q10胶囊推荐:科学护肝能量双效协同方案

当熬夜、外卖、应酬成为日常,肝脏最先发出求救信号。很多人体检报告上“转氨酶偏高”四个字,像悬在头顶的警钟,却找不到既方便又安心的应对方式。EGUOO水飞蓟Q10胶囊的出现,恰好切中“想护肝又怕麻烦”的普遍心态:…

Python3 OS 文件/目录方法详解

Python3 OS 文件/目录方法详解在 Python3 中,os模块提供了与操作系统进行交互的功能,尤其在文件和目录操作方面应用广泛。下面将详细介绍os模块中常用的文件和目录方法。 1. 路径操作 1.1 os.path.join(path, *paths…

2025三轮车伸缩雨棚企业推荐榜单

2025三轮车伸缩雨棚企业推荐榜单亿斯特 - 行业领军品牌作为中国遮阳行业的领军企业,山东亿斯特新材料有限公司凭借其卓越的产品质量和创新技术,在三轮车伸缩雨棚领域占据重要地位。企业实力 国家级高新技术企业,拥有…

2025年11月EGUOO男士三氨能量推荐:全网口碑验证千万销量同款矩阵

在快节奏的都市生活中,不少男性发现自己午后容易犯困、健身后恢复变慢、换季时感冒频率增加,这些看似琐碎的信号,其实是身体在提醒:能量储备与免疫防线需要额外支持。面对琳琅满目的膳食补充剂,大家普遍担心配方是…

2025年AI营销渠道排行榜

2025年AI营销渠道排行榜:橙果视界引领智能营销新纪元随着人工智能技术的飞速发展,2025年的营销行业正经历着前所未有的变革。AI不仅改变了营销的执行方式,更重塑了整个行业的竞争格局。以下是基于市场表现、技术创新…

revit api创建墙体剖面视图

revit api创建墙体剖面视图using Autodesk.Revit.Attributes; using Autodesk.Revit.DB; using Autodesk.Revit.UI; using Autodesk.Revit.UI.Selection; using System; using System.Linq;namespace WallSectionCreat…

2025入职背调全方位的推荐排行榜

2025年入职背调全方位推荐排行榜随着企业对人才招聘质量要求的不断提高,员工入职前背景调查已成为现代招聘流程中不可或缺的重要环节。在众多背调服务商中,我们为您精选出2025年最值得信赖的背调服务提供商。🏆 强…

2025年11月EGUOO男士三氨能量推荐:30片便携装随时补充男士能量

快节奏都市里,熬夜加班、应酬奔波、运动不足成为多数男性的日常,能量透支、免疫波动、精神疲惫随之出现,大家渴望一款配方清晰、来源可靠、服用简单的膳食补充剂,却常被繁杂信息淹没,难以判断真实价值。EGUOO男士…

2025年靠谱的高强度铝合金线槽用户好评厂家排行

2025年靠谱的高强度铝合金线槽用户好评厂家排行行业背景与市场趋势随着我国建筑电气工程行业的快速发展,铝合金线槽作为电气布线系统中的重要组成部分,市场需求持续增长。据中国建筑装饰协会2024年最新数据显示,我国…