hdu-1789-Doing Homework again

来源:互联网 发布:金十数据vip版 免费 编辑:程序博客网 时间:2024/05/22 06:46

题意:

在截止日期之后交作业,会扣除相应的分数,现在求讲扣除的分数降到最低;每个作业费时一天。

解题思路:

贪心算法,根据分数又大大小排列。 

程序:

#include<stdio.h>#include<string.h>#include<stdlib.h>int f[1100];struct node{    int date;    int score;}s[1100];int cmp (const void *a,const void *b){    node *aa=(node*)a,*bb=(node *)b;    if(aa->score!=bb->score)    return bb->score - aa->score;    else    return aa->date - bb->date; }int main(){    int t,n,i,j,sum;    scanf("%d",&t);    while(t--)    {        scanf("%d",&n);        for(i=0;i<n;i++)        {            scanf("%d",&s[i].date);        }        for(i=0;i<n;i++)        {            scanf("%d",&s[i].score);         }        qsort(s,n,sizeof(node),cmp);        memset(f,0,sizeof(f));        sum=0;        for(i=0;i<n;i++)        {            for(j=s[i].date;j>0;j--)            {                if(f[j]==0)                {                    f[j]=1;                    break;                }                           }             if(j==0)                sum+=s[i].score;        }        printf("%d\n",sum);    }        return 0;}



0 0
原创粉丝点击