zoukankan      html  css  js  c++  java
  • hdu 1789 Doing Homework again

    这道题是道简单的贪心题,题目中要的是最少要扣去的分数,那么我们要尽量得到最多的分数。首先将数据按照分数从大到小的顺序排序(如果相同就要deadline的从小到大排),

    然后每次取最大分数的将其安排在截至期限的最后一天,如果此天已安排,则一直向前一天安排,直到不能安排,则加入sum。

    #include"iostream"
    #include"algorithm"
    #include"stdio.h"
    #include"string.h"
    #include"cmath"
    #define mx 1005
    using namespace std;
    struct node
    {
        int deadline;
        int score;
    }ignatius[mx];
    int done[mx];
    bool cmp(const node a,const node b)
    {
        if(a.score!=b.score) return a.score>b.score;
        else if(a.deadline!=b.deadline) return a.deadline<b.deadline;
    }
    int main()
    {
        int t;
        cin>>t;
        while(t--)
        {
            int n,i,j;
            cin>>n;
            for(i=1;i<=n;i++) cin>>ignatius[i].deadline;
            for(i=1;i<=n;i++) cin>>ignatius[i].score;
            memset(done,0,sizeof(done));
            sort(ignatius+1,ignatius+n+1,cmp);
            int sum=0;
            for(i=1;i<=n;i++)
            {
                if(!done[ignatius[i].deadline]) done[ignatius[i].deadline]=1;
                else
                {
                    for(j=ignatius[i].deadline-1;j>=1;j--)
                    {
                        if(!done[j]) {done[j]=1;break;}
                    }
                    if(j<=0)sum+=ignatius[i].score;
                }
            }
            cout<<sum<<endl;
        }
        return 0;
    }
    View Code
  • 相关阅读:
    每天一篇经济学人 2020-09-15 分享在 特朗普的“疫苗政治”:科学与政治之争 | 经济学人
    english notes
    new word
    gilbert strang
    news etc
    对自己的要求
    JDBC添加数据
    题目-1031-字符串反转
    题目-1002-字符串分类统计
    ERROR:格式化hdfs后,datanode只启动了一个
  • 原文地址:https://www.cnblogs.com/acm-jing/p/4337479.html
Copyright © 2011-2022 走看看