H - Tokens on the Segments(贪心+优先队列)

该博客讨论了一种贪心算法与优先队列结合的方法,用于解决区间标记问题。给定多个区间,目标是找到最多能被标记的不重叠区间,要求每个区间至少有一个点被标记。通过排序区间并使用优先队列来动态更新和重新插入区间,可以达到这个目的。样例输入和输出展示了算法的应用。
摘要由CSDN通过智能技术生成

H - Tokens on the Segments(贪心+优先队列)

在这里插入图片描述Output
For each test case output one line containing one integer, indicating the maximum possible number of segments that have at least one token on each of them.

Sample Input
2
3
1 2
1 1
2 3
3
1 2
1 1
2 2
Sample Output
3
2
Hint
For the first sample test case, one can put three tokens separately on (1, 2), (2, 1) and (3, 3).

For the second sample test case, one can put two tokens separately on (1, 2) and (2, 3).

题意:给出许多个区间,每个区间上的每个点都可以被标记,只要每个区间上有一个点被标记,即可记为这个区间被标记(若有区间重叠部分的点被标记,只能代表其中一个区间被标记);求最多可以被标记的区间个数。
思路:对于所有的区间我们进行一个排序,(按左边界小的排序;若左边界同,按右边界小的排序),把这些区间放进一个优先队列,每次都标记左边界,用一个maxx进行记录左边界,如果左边界已经被标记了,就判断区间是否为1,不为1的话就可以把左边界右移一位,然后再次将这个改过的区间加入到优先队列中去。
(注意:我一开始用了一个vis判断是否标记,不过忽略了1e9,过大,会产生MLE)

#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e5 +
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值