首页 > Web开发 > 详细

_bzoj1029 [JSOI2007]建筑抢修【贪心 堆】

时间:2017-02-07 20:14:41      阅读:254      评论:0      收藏:0      [点我收藏+]

传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1029

经典的贪心问题,不解释。

#include <cstdio>
#include <algorithm>
#include <queue>

const int maxn = 150005;

int n, ima, ans;
struct st {
	int x, y;
} a[maxn];
std::priority_queue<int> hp;

bool cmp(const st & aa, const st & ss) {
	return aa.y < ss.y;
}

int main(void) {
	//freopen("in.txt", "r", stdin);
	scanf("%d", &n);
	for (int i = 0; i < n; ++i) {
		scanf("%d%d", &a[i].x, &a[i].y);
	}
	std::sort(a, a + n, cmp);
	
	for (int i = 0; i < n; ++i) {
		if (ima + a[i].x <= a[i].y) {
			ima += a[i].x;
			++ans;
			hp.push(a[i].x);
		}
		else if (a[i].x < hp.top()) {
			ima = ima - hp.top() + a[i].x;
			hp.pop();
			hp.push(a[i].x);
		}
	}
	printf("%d\n", ans);
	return 0;
}

  

_bzoj1029 [JSOI2007]建筑抢修【贪心 堆】

原文:http://www.cnblogs.com/ciao-sora/p/6375646.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!