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

    首先按照结束时间排序,显然结束早的要去做。能做就做,如果做不了,就在前面找一个耗时最大的,把最大的扔掉,换成当前的,如果最大的也比当前的小,那么显然当前的是做不了的,不用管了.

    struct inter {
    	int r, len;
    	bool operator <(const inter&rhs)const {
    		return r < rhs.r;
    	}
    } t[N];
    std::priority_queue<int> q;
    
    
    int main() {
    	read(n);
    	rep(i, 1, n) {
    		read(t[i].len);
    		read(t[i].r);
    	}
    	std::sort(t + 1, t + n + 1);
    	int last(0), ans(0);
    	rep(i, 1, n) {
    		if(last + t[i].len > t[i].r) {
    			if(t[i].len < q.top()) {
    				last -= q.top();
    				last+=t[i].len;
    				q.pop();
    				q.push(t[i].len);
    			}
    
    		} else {
    			last += t[i].len;
    			++ans;
    			q.push(t[i].len);
    		}
    	}
    
    
    	out(ans, '
    ');
    	return 0;
    }
    

    本文来自博客园,作者:{2519},转载请注明原文链接:https://www.cnblogs.com/QQ2519/p/15464759.html

  • 相关阅读:
    JDK6的switch支持不是很好
    团队作业(2)
    团队作业(1)
    4月30日
    重构:改善既有代码的设计有感
    4月28日
    4月27日
    4月26日
    4月25日
    4月24日
  • 原文地址:https://www.cnblogs.com/QQ2519/p/15464759.html
Copyright © 2011-2022 走看看