hdu 1789 doing homework again(贪心)

http://acm.hdu.edu.cn/showproblem.php?pid=1789

 

题意:

每个老师都会给出交作业的期限和没按时交会扣掉的分数 要求出扣除最少分数的情况

思路:

是一题典型的贪心
把扣除分数多的科目排在前面

并排在尽量晚的位置 

 

#include<stdio.h>

#include<string.h>

#include<math.h>

#include<iostream>

#include<algorithm>

using namespace std;

struct node

{

    int day,val;

};

node num[1000+100];

int vis[1000+100];

int cmp1(node a,node b)

{

    return a.val>b.val;

}

int main()

{

    int i,j,k;

    int t,n,m;

    int ans;

    scanf("%d",&t);

    while(t--)

    {

        ans=0;

        memset(vis,0,sizeof(vis));

        scanf("%d",&n);

        for(i=1;i<=n;i++)

        {

            scanf("%d",&num[i].day);

        }

        for(i=1;i<=n;i++)

        {

            scanf("%d",&num[i].val);

        }

        sort(num+1,num+n+1,cmp1);



        for(i=1;i<=n;i++)

        {            

            int temp=num[i].day;

            while(vis[temp]) temp--;

            if(temp==0)

            {

                ans+=num[i].val;

            }

            else vis[temp]=1;

        }

        printf("%d\n",ans);

    }

    return 0;

}

 

你可能感兴趣的:(home)