P2107 小Z的AK计划

Portal.

比较常规的反悔贪心。按照 x x x 从小到大选点,对于一个新到达的点,考虑它能否被选择。如果此时时间超过了 m m m,从前面的点按从大到小的顺序贪心地放弃 t i t_i ti 点,计算出选择这个点所能达到的全局点数。

注意要先假定这个点选,因为有可能放弃当前点,只是以当前位置为终止分界。

时间复杂度 O ( n log ⁡ n ) O(n\log n) O(nlogn)。

cpp 复制代码
#include <bits/stdc++.h>
using namespace std;
#define int long long

const int maxn=1e5+5;
struct node{int x,t;}a[maxn];
priority_queue<int> q;

bool cmp(node a,node b){return a.x<b.x;}

signed main()
{
	int n,m;cin>>n>>m;
	for(int i=1;i<=n;i++) cin>>a[i].x>>a[i].t;
	sort(a+1,a+n+1,cmp);
	int ans=0,tmp=0,cnt=0;
	for(int i=1;i<=n;i++)
	{
		tmp+=a[i].x-a[i-1].x+a[i].t,q.push(a[i].t),cnt++;
		if(tmp>m) while(!q.empty()&&tmp>m) tmp-=q.top(),q.pop(),cnt--;
		if(tmp>m) break;
		ans=max(ans,cnt);
	}
	cout<<ans;
	return 0;
}
相关推荐
汉克老师20 小时前
2025年海淀区中小学信息学竞赛复赛(小学组试题第六题 蜂窝网络 (net))
c++·贪心算法·北京海淀中小学信息学竞赛·lower_bound
向葭奔赴♡1 天前
Android AlertDialog实战:5种常用对话框实现
android·java·开发语言·贪心算法·gitee
程序员-King.1 天前
day106—双指针—长度最小的子数组(LeetCode-209)
算法·贪心算法
ffcf2 天前
消息中间件6:Redis副本数变为0和删除PVC的区别
算法·贪心算法
蕓晨2 天前
钱币找零问题-贪心算法解析
c++·算法·贪心算法
我不会写代码njdjnssj2 天前
贪心算法+动态规划
算法·贪心算法·动态规划
程序员-King.3 天前
day104—对向双指针—接雨水(LeetCode-42)
算法·贪心算法
憨憨崽&4 天前
进击大厂:程序员必须修炼的算法“内功”与思维体系
开发语言·数据结构·算法·链表·贪心算法·线性回归·动态规划
李玮豪Jimmy5 天前
Day26:贪心算法part4(452.用最少数量的箭引爆气球、435.无重叠区间、763.划分字母区间)
算法·贪心算法
啊吧怪不啊吧5 天前
贪心算法(局部最优实现全局最优)第二篇
大数据·算法·leetcode·贪心算法