zoukankan      html  css  js  c++  java
  • P4053 [JSOI2007]建筑抢修

    Miku

    贪心

    按照时间从前往后尽可能的修

    如果能修就修,修不了的话

    我们可以选择撤掉一个以前修的腾出时间来,但是,腾出两个显然更蠢

    那么,显然无论腾不腾,截止到此建筑,能修的数量最多一定()

    由此观之,应该把已修的最大的取出来,然后进行比较,放进小的,扔掉大的,来为后面腾时间

    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    #include<queue>
    using namespace std;
    priority_queue <long long >q	;
    long long n;
    struct bu{
    	long long ne;
    	long long boom;
    }buil[150001];
    bool cmp(bu x,bu y){
    	if(x.boom==y.boom)
    	return x.ne<y.ne;
    	return x.boom<y.boom;
    	
    }
    long long now;
    long long s;
    int main(){
    	scanf("%lld",&n);
    	for(long long i=1;i<=n;++i){
    		scanf("%lld%lld",&buil[i].ne,&buil[i].boom);
    	}
    	sort(buil+1,buil+n+1,cmp);
    	for(long long i=1;i<=n;++i){
    		if(buil[i].ne+now<=buil[i].boom){
    			q.push(buil[i].ne);
    			now+=buil[i].ne;
    			s++;
    			continue;
    		}else{
    			if(!q.empty()){
    				if(q.top()>buil[i].ne){
    					now=now+buil[i].ne-q.top();
    					q.pop();
    					q.push(buil[i].ne);
    				}else{
    					continue;
    				}
    			}
    		}
    	}
    	cout<<s;
    	return 0;
    }
    
    
  • 相关阅读:
    mysql修改加密方式
    信息安全学习路线
    DNS域传送漏洞
    CSRF漏洞
    反序列化漏洞
    计算机通讯基础
    gorm gen使用
    golang makefile使用
    linux命令行录制
    go代码自动生成注释
  • 原文地址:https://www.cnblogs.com/For-Miku/p/13420229.html
Copyright © 2011-2022 走看看