bzoj1620 / P2920 [USACO08NOV]时间管理Time Management

P2920 [USACO08NOV]时间管理Time Management

显然的贪心。

按deadline从大到小排序,然后依次填充时间。

最后时间为负的话那么就是无解

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<algorithm>
 5 #define re register
 6 using namespace std;
 7 int max(int a,int b){return a>b?a:b;}
 8 struct data{
 9     int t,dl;
10     bool operator < (const data &tmp) const{return dl>tmp.dl;}
11 }a[1002];
12 int n,tt,ans;
13 int main(){
14     scanf("%d",&n);
15     for(re int i=1;i<=n;++i) scanf("%d%d",&a[i].t,&a[i].dl);
16     sort(a+1,a+n+1); tt=a[1].dl;
17     for(re int i=1;i<=n;++i){
18         tt=min(tt,a[i].dl); tt-=a[i].t;//注意在deadline前完成所以要取min
19     }tt<0 ? printf("-1"):printf("%d",tt);
20     return 0;
21 }
View Code

 

posted @ 2018-10-27 16:41  kafuuchino  阅读(97)  评论(0编辑  收藏  举报