hdu1789 Doing Homework again (贪心)

来源:互联网 发布:lol扫号器数据 编辑:程序博客网 时间:2024/04/25 08:28

题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1789


题解:贪心,reduced score最大最先完成


#include <stdio.h>#include <stdlib.h>#include <string.h>#define MAXN 1002struct node {int deadline,score;}hwork[MAXN];int cmp(const void *x,const void *y){struct node *a=(struct node *)x;struct node *b=(struct node *)y;return b->score-a->score;//从大到小排序,reduced score最大最先完成}int main(){int test,i,j,n,sum;int flag[MAXN];scanf("%d",&test);while(test--){scanf("%d",&n);sum=0;memset(flag,0,sizeof(flag));for(i=0;i<n;++i)scanf("%d",&hwork[i].deadline);for(i=0;i<n;++i)scanf("%d",&hwork[i].score);qsort(hwork,n,sizeof(hwork[0]),cmp);for(i=0;i<n;++i){for(j=hwork[i].deadline;j>0;--j){//从deadline往前搜,如果有一天未被占用,则完成此作业,否则放弃if(flag[j]==0){flag[j]=1;break;}}if(j==0)//此作业未能完成sum+=hwork[i].score;}printf("%d\n",sum);}return 0;}


原创粉丝点击