JSOI2007 建筑抢修

JSOI2007 建筑抢修_第1张图片

首先我们先按照报废时间排序,然后判断在鬼ID那个时间里能不能修好,如果修不好就炸掉

#include 
#include 
#include 
#include 
#include 
#define maxn 250000
#define int long long
#define rep(x,y,z) for(int x = y ; x <= z ;x ++) 
using namespace std ;
int n ;
struct dy{
    int  w , t ;
    int operator < (const dy &x) const {
        return t < x.t ;
    }
}a[maxn] ;
int tot , ans ;
priority_queueq ;
signed main() {
    scanf("%lld",&n) ;
    rep(i,1,n) {
        scanf("%lld%lld",&a[i].w,&a[i].t) ;
    }sort(a+1,a+1+n) ;
    rep(i,1,n){
        if(tot + a[i].w > a[i].t) {
            if(a[i].w < q.top()) {
                tot -= q.top() , q.pop() ;
                q.push(a[i].w) ;
                tot += a[i].w ;
            }
        }else {
            ans ++ ;
            q.push(a[i].w) ;
            tot += a[i].w ;
        }
    }
    cout << ans << endl ;
    return 0 ;
}

转载于:https://www.cnblogs.com/lyt020321/p/11637831.html

你可能感兴趣的:(JSOI2007 建筑抢修)