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;
}
相关推荐
汉克老师5 小时前
GESP2025年3月认证C++五级( 第三部分编程题(1、平均分配))
c++·算法·贪心算法·排序·gesp5级·gesp五级
嘻嘻哈哈樱桃16 小时前
牛客经典101题解题集--贪心算法+模拟
java·python·算法·贪心算法
汉克老师4 天前
GESP2025年6月认证C++五级( 第二部分判断题(1-10))
c++·贪心算法·分治算法·线性筛法·gesp5级·gesp五级
亚空间仓鼠4 天前
Kubernetes技术入门与实践(五):DaemonSet与StatefulSet
容器·贪心算法·kubernetes
RkxI7soAM4 天前
Ledger 硬件钱包在中国市场的竞争优势分析
决策树·贪心算法
空中海4 天前
Kubernetes 入门基础与核心架构
贪心算法·架构·kubernetes
汉克老师4 天前
GESP2025年6月认证C++五级( 第一部分选择题(9-15))
c++·贪心算法·分治算法·二分算法·gesp5级·gesp五级·高精度除法
荣光属于凯撒5 天前
P13750 [NWERC 2024] Limited Library
贪心算法·二分
叶小鸡7 天前
小鸡玩算法-力扣HOT100-贪心算法
算法·leetcode·贪心算法
小辉同志8 天前
45. 跳跃游戏 II
c++·leetcode·游戏·贪心算法