从后往前不反悔贪心法
查看原帖
从后往前不反悔贪心法
463774
acmxhy楼主2022/5/7 03:27

思想:时间倒流,逆向思维

#include<bits/stdc++.h>
#ifdef LOCAL
//FILE* FP = freopen("text.in", "r", stdin);
#endif
#define int long long
using namespace std;
pair<int,int>a[100005];
int n,sum,ma=0x3f3f3f3f;
priority_queue<int>q;
signed main() {
	scanf("%lld",&n);
	for(int i=1;i<=n;i++){
		scanf("%lld%lld",&a[i].first,&a[i].second);
	}
	sort(a+1,a+n+1);
	for(int i=n;i>=0;i--){
		while(!q.empty()&&ma>a[i].first){
			sum+=q.top();q.pop();
			ma--;
		}
		ma=a[i].first;
		q.push(a[i].second);
	}
	printf("%lld",sum);
    return 0;
}
/*
3 
2 10 
1 5 
1 7 
*/ 

2022/5/7 03:27
加载中...