正解:贪心

解题报告:

传送门!

首先在学习贪心的入门题的时候我们就知道,当x=1的时候,也就是每条线段不能相交的时候的做法——就按右端点排序然后能选就选,也就是会议安排问题,原因显然?就你选右端点更靠左的线段显然不会更劣

然后现在考虑x!=1了怎么做

于是考虑类似的套路,依然是右端点排序能选就选,考虑什么时候不能选了?就加入现在新加入了一条线段,然后导致有个点被覆盖次数超过x了,那肯定就是要从覆盖了这个点的边中删去一条?然后就考虑删哪条?那就显然是把右端点最靠右的给删了,证明的话,因为我们是从左到右一个个扫描点的,所以显然每次删最靠右的收益最大

具体实现的话,两个点?

一个是因为要一个个点地扫所以要离散化,显然只有端点和p有意义,就成功把复杂度降下来了QwQ

一个是,我们不是要支持删边操作balabla的嘛,就感觉比较难实现?所以考虑开个c数组记录到达这个点之后线段数量的变化,再开个全局变量t记录整个儿经过了几条线段,然后差分一下,这样每次删边就只会修改c[右端点]和t

(其实也可以,直接开个set,就直接支持一下删除最大值最小值操作就欧克了QwQ其实方便很多QAQ

over

关于细节二我好像说得不太清,,,还是不能弃疗所以还是强行再解释下趴,,,

首先我们要开个c数组,这个c数组是针对每个点开的,主要是用来记录这个到达这个点之后还存活的线段的数量的变化情况

然后考虑什么时候线段数量会有变化?一个是一条边的右端点经过了这个点,于是这条线段就不会经过这个点了,所以就--了

另一个是一条边被删了,然后本来因为这条边c--了,所以就++补回来就欧克了

over,放下不知道为什么跑得飞慢的代码QAQ

#include<bits/stdc++.h>
using namespace std;
#define il inline
#define gc getchar()
#define ri register int
#define rc register char
#define rb register bool
#define rp(i,x,y) for(ri i=x;i<=y;++i) const int N=8e5+;
int n,m,st[N],l[N],r[N],p[N],x[N],tot,lim[N],tmp,c[N],as;
vector<int>nod[N];
priority_queue<int>Q; il int read()
{
rc ch=gc;ri x=;rb y=;
while(ch!='-' && (ch>'' || ch<''))ch=gc;
if(ch=='-')ch=gc,y=;
while(ch>='' && ch<='')x=(x<<)+(x<<)+(ch^''),ch=gc;
return y?x:-x;
}
il int fd(ri x){return lower_bound(st+,st+tot+,x)-st;} int main()
{
// freopen("3602.in","r",stdin);freopen("3602.out","w",stdout);
n=read();m=read();rp(i,,n)st[++tot]=l[i]=read(),st[++tot]=r[i]=read();rp(i,,m)st[++tot]=p[i]=read(),x[i]=read();
sort(st+,st++tot);tot=unique(st+,st+tot+)-st-;rp(i,,n)nod[fd(l[i])].push_back(fd(r[i]));
memset(lim,,sizeof(lim));rp(i,,m)p[i]=fd(p[i]),lim[p[i]]=min(lim[p[i]],x[i]);
rp(i,,tot)
{
tmp+=c[i];
for(auto j:nod[i])--c[j+],++tmp,Q.push(j),++as;
while(tmp>lim[i])++c[Q.top()+],--tmp,--as,Q.pop();
}
printf("%d\n",as);
return ;
}

洛谷P3602 Koishi Loves Segments 贪心的更多相关文章

  1. D 洛谷 P3602 Koishi Loves Segments [贪心 树状数组+堆]

    题目描述 Koishi喜欢线段. 她的条线段都能表示成数轴上的某个闭区间.Koishi喜欢在把所有线段都放在数轴上,然后数出某些点被多少线段覆盖了. Flandre看她和线段玩得很起开心,就抛给她一个 ...

  2. 洛谷P3602 Koishi Loves Segments(贪心,multiset)

    洛谷题目传送门 贪心小水题. 把线段按左端点从小到大排序,限制点也是从小到大排序,然后一起扫一遍. 对于每一个限制点实时维护覆盖它的所有线段,如果超过限制,则贪心地把右端点最大的线段永远删去,不计入答 ...

  3. E 洛谷 P3598 Koishi Loves Number Theory[数论]

    题目描述 Koishi十分喜欢数论. 她的朋友Flandre为了检测她和数论是不是真爱,给了她一个问题. 已知 给定和个数,求对取模. 按照套路,呆萌的Koishi当然假装不会做了,于是她来向你请教这 ...

  4. C 洛谷 P3599 Koishi Loves Construction [构造 打表观察]

    题目描述 Koishi决定走出幻想乡成为数学大师! Flandre听说她数学学的很好,就给Koishi出了这样一道构造题: Task1:试判断能否构造并构造一个长度为的的排列,满足其个前缀和在模的意义 ...

  5. Luogu P3602 Koishi Loves Segments

    传送门 题解 既然是选取区间,没说顺序 肯定先排遍序 都是套路 那么按什么排序呢??? 为了方便处理 我们把区间按左端点从小到大排序 把关键点也按从小到大排序 假设当扫到 \(i\) 点时,i 点之前 ...

  6. 洛谷P3599 Koishi Loves Construction 构造

    正解:构造 解题报告: 传送门! 这题俩问嘛,就分成两个问题港QwQ 就按顺序趴,先港第一问QwQ 首先要发现,n在膜n意义下就是0嘛 那作为前缀和的话显然它就只能放在第一个 然后再想下,发现,如果n ...

  7. 【Luogu3602】Koishi Loves Segments(贪心)

    [Luogu3602]Koishi Loves Segments(贪心) 题面 洛谷 题解 离散区间之后把所有的线段挂在左端点上,从左往右扫一遍. 对于当前点的限制如果不满足显然会删掉右端点最靠右的那 ...

  8. 洛谷 P1580 yyy loves Easter_Egg I

    洛谷 P1580 yyy loves Easter_Egg I 题解: 队列+字符串 #include <cstdio> #include <string> #include ...

  9. 【洛谷 P1667】 数列 (贪心)

    题目链接 对于一个区间\([x,y]\),设这个区间的总和为\(S\) 那么我们在前缀和(设为\(sum[i]\))的意义上考虑到原操作其实就是\(sum[x−1]+=S\) , \(sum[x]+S ...

随机推荐

  1. c# 使用GDAL处理大图

    注意问题: 1.GDAL 使用官网生成好的dll,必须把Bin目录下的dll一并加到执行目录下去,否则会出错.  2. 用环境变量设置引用路径可以避免一大堆dll放一起.代码如下: /// <s ...

  2. 【转帖】Mysql多维数据仓库指南 第一篇 第1章

     Mysql多维数据仓库指南 第一篇基本原理 章节列表: 第1章:基本组成 第2章:维度历史 第3章:维度可加性 第4章:维度查询 本篇概述 你将运用关系数据库来实施一个维度数据仓库.事实表和维表这两 ...

  3. 创建sequence和触发器出现权限不足

    解决方式: 已sysdba登陆后,进行授权 grant create any sequence to [用户]创建sequence权限不足解决方法 grant create trigger to [用 ...

  4. ios开发之--关于UIView的autoresizingMask属性的研究

    在 UIView 中有一个autoresizingMask的属性,它对应的是一个枚举的值(如下),属性的意思就是自动调整子控件与父控件中间的位置,宽高. enum { UIViewAutoresizi ...

  5. python 读取配置文件方法

    #coding=utf8 import ConfigParser config = ConfigParser.ConfigParser() config.readfp(open(raw_input(& ...

  6. 版本控制 version control和团队协作

    这些技术你可能暂时不会用到,但是一旦软件体量变大,开发人数增加,这就带来质变,需要借助一些工具或者技术才能完成这些复杂的工程. 你可以从最简单的情况思考,你可以对任何类型的文件进行版本控制,比如一个p ...

  7. 连接mysql 数据库时出现2003 -can't connect to mysql server on 'localhost'(100038)的问题

    通过eclipse连接数据库是出现了以下问题 可能是由于数据库未开启造成的,你需要手动开启数据库. 手动开启数据库的方法: 1 win+r键后,在cmd中输入services.msc,点击确定 点击左 ...

  8. 使用 PREPARE 的几个注意点

    简单的用set或者declare语句定义变量,然后直接作为sql的表名是不行的,mysql会把变量名当作表名.在其他的sql数据库中也是如此,mssql的解决方法是将整条sql语句作为变量,其中穿插变 ...

  9. 常见的压缩文件格式案例tarZ

    在AIX上最常见的压缩文件就是.tar压缩格式的文件了.  而除了tar文件以外,有时会遇到数据是用其它的压缩文件格式,所以偶顺手整理了一些常见的压缩文件格式,在AIX要怎么解压缩 : 一. .tar ...

  10. Codeforces 1132D - Stressful Training - [二分+贪心+优先队列]

    题目链接:https://codeforces.com/contest/1132/problem/D 题意: 有 $n$ 个学生,他们的电脑有初始电量 $a[1 \sim n]$,他们的电脑每分钟会耗 ...