hdu 3661 Assignments

题意:n个工人,规定时间t,给出n个A任务需要完成的时间,n个B任务需要完成的时间,每个人选一个A一个B,不重复,如果工作时间超过t,老板需要支付(A+B-t)的工资,问需要支付最少

思路:贪心

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 
 4 const int N=1010;
 5 int a[N],b[N];
 6 int vis1[N],vis[N];
 7 
 8 bool cmp(int x,int y){
 9     return x>y;
10 }
11 
12 int main(){
13     int  n;
14     while(~scanf("%d",&n)){
15         memset(vis,0,sizeof(vis));
16         memset(vis1,0,sizeof(vis1));
17         int t;
18         scanf("%d",&t);
19         int sum=0;
20         for(int i=1;i<=n;i++){
21             scanf("%d",&a[i]);
22         }
23         for(int i=1;i<=n;i++) scanf("%d",&b[i]);
24         sort(a+1,a+1+n);
25         sort(b+1,b+1+n,cmp);
26         for(int i=1;i<=n;i++) {
27             if(t<a[i]+b[i])
28                 sum+=(a[i]+b[i]-t);
29         }
30         cout<<sum<<endl;
31     }
32 }

 

posted on 2017-09-21 17:14  hhhhx  阅读(107)  评论(0编辑  收藏  举报

导航