zoukankan      html  css  js  c++  java
  • bzoj 1572: [Usaco2009 Open]工作安排Job【贪心+堆】

    先按照时间顺序加,价值塞进小根堆里,碰到不合法情况就从堆里减去

    #include<iostream>
    #include<cstdio>
    #include<queue>
    #include<algorithm>
    using namespace std;
    const int N=100005;
    int n,now;
    priority_queue<long long>q;
    struct use
    {
    	int t;
    	long long v;
    }a[N];
    bool cmp(use a,use b)
    {
    	return a.t<b.t;
    }
    long long ans;
    int main()
    {
    	scanf("%d",&n);
    	for(int i=1;i<=n;i++) 
    		scanf("%d%lld",&a[i].t,&a[i].v);
    	sort(a+1,a+n+1,cmp);
    	for(int i=1;i<=n;i++)
    	{
    		ans+=a[i].v;
    		now++;
    		q.push(-a[i].v);
    		if(now>a[i].t)
    		{
    			ans+=q.top();
    			q.pop();
    			now--;
    		}
    	}
    	printf("%lld
    ",ans);
    	return 0;
    }
    
  • 相关阅读:
    RabbitMQ(四)
    RabbitMQ(三)
    RabbitMQ(二)
    定位
    响应式布局
    学习前端的一些心得
    css样式大全
    常用标签
    HTML
    app 被拒绝原因
  • 原文地址:https://www.cnblogs.com/lokiii/p/8963694.html
Copyright © 2011-2022 走看看