HDU1789 Doing Homework again 做作业【贪心】

题目链接:https://vjudge.net/problem/HDU-1789

题目大意:

给出N个作业的截至日期,和N个作业不交所扣掉的分数,要求输出扣除分数做少的方案。

解析:

与上一道销售商品类似,将分数从大到小排序,找到deadline,如果它的期限没有被占用,就在该天写完,然后vis置1,如果占用,则从它的前一天开始向前查找有没有空闲的日期,如果有则占用,vis置1。这样就可以得到最大分数。然后用总分数减去得到最大分数即为扣除的最小分数。

#include <cstdio>
#include <algorithm>
using namespace std;
#define MAXN 1000+10
int vis[MAXN];

struct node
{
    int day, sco;
};

bool mycmp(node a, node b)
{
    return a.sco > b.sco;
}

int main()
{
    int t, n;
    while (scanf("%d", &t) != EOF)
    {
        int i, j;
        while (t--)
        {

            memset(vis, 0, sizeof(vis));
            node a[MAXN];
            scanf("%d", &n);
            int maxday = 0; int sum = 0;
            for (i = 0; i < n; i++)scanf("%d", &a[i].day);
            for (i = 0; i < n; i++)
            {
                scanf("%d", &a[i].sco);
                sum += a[i].sco;
            }
            int sumscore = 0;
            sort(a, a + n,mycmp);
            for (i = 0; i < n; i++)
            {
                if (!vis[a[i].day])
                {
                    vis[a[i].day] = 1;
                    sumscore += a[i].sco;
                }
                else
                {
                    for (j = a[i].day-1; j >= 1; j--)         //若该天已被占据,则向之前寻找没有占据的日期
                    {
                        if (!vis[j])
                        {
                            vis[j] = 1;
                            sumscore += a[i].sco;
                            break;
                        }
                    }
                }
            }
            printf("%d\n", sum - sumscore);
        }
    }
    return 0;
}

2018-04-21

原文地址:https://www.cnblogs.com/00isok/p/8901638.html

时间: 2024-10-07 17:13:59

HDU1789 Doing Homework again 做作业【贪心】的相关文章

做作业中遇到的问题--长轮询

在这次的网站设计作业开发(用Thinkphp框架进行开发)中一直都很顺利,不管是在首页的制作还是后台的开发中都没遇到过什么大的问题.然而在实现客服功能的时候却遇到了很大的阻碍. 由于不会socketio,在实现客服功能的时候用到的是现在比较常用的长轮询.长轮询实现的方式主要分为两种,一种是真长轮询,就是说浏览器通过AJAX向服务器请求一次信息,如果没有得到想要的数据就一直不断开.另一钟是伪长轮询,实现的方式为浏览器每一秒通过AJAX向服务器请求信息,来实现类似与长轮询的效果.大致来看,真长轮询的

第十周补做作业

第十周课下补做作业 相关知识点的总结 Comparable接口:如果链表中存放的对象不是字符串数据,那么创建对象的类必须实现Comparable接口,即实现该接口中的方法int compareTo(Object b)来规定对象的大小关系.也就是让待排序对象所在的类实现Comparable接口,并重写Comparable接口中的compareTo()方法,缺点是只能按照一种规则排序 Comparator接口:编写多个排序方式类实现Comparator接口,并重写新Comparator接口中的com

贪心初步 hdu1789 Doing Homework again

一道非常经典的题目 题目地址 题目大意 给出N个作业的截至日期,和N个作业不交所扣掉的分数,要求输出扣除分数做少的方案. 正确的策略是: 扣除分数大的先做 扣除分数相同,先截止的先做 做一件事的时候,从截止时间开始向第一天遍历,如果当天没有被作业占据则标记为占据.做这件事的日期越大越好. 如果不能满足3的条件,则为不能完成 1 #include <iostream> 2 #include <algorithm> 3 #include <string> 4 #includ

HDU1789 Doing Homework again 【贪心】

Doing Homework again Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 6878    Accepted Submission(s): 4096 Problem Description Ignatius has just come back school from the 30th ACM/ICPC. Now he h

解题报告 HDU1789 Doing Homework again

Doing Homework again Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Description Ignatius has just come back school from the 30th ACM/ICPC. Now he has a lot of homework to do. Every teacher gives him a deadline of handing

python第二十二天-----在做作业当中............

作业 1, ATM:模拟实现一个ATM + 购物商城程序 额度 自定义实现购物商城,买东西加入 购物车,调用信用卡接口结账可以提现,手续费5%支持多账户登录支持账户间转账记录每月日常消费流水提供还款接口ATM记录操作日志提供管理接口,包括添加账户.用户额度,冻结账户等...用户认证用装饰器 程序结构:ATM/#综合目录|- - -atm/#atm程序主目录| |- - -README| |- - -__init__.py| |- - -bin/#执行程目录| | |- - -__init__.p

玩游戏也能做作业?这个事每个家长都必须知道

在收视率极高的<中国诗词大会>第一季和第二季节目中,除了号称"连续出场王"而且"能造机器人"的女博士陈更之外,还有一位令人印象深刻的参赛者,他把只能读的诗词重新变成歌来唱.请原谅我忘记了他的名字,也没记住他教给同场竞技的小女生的旋律. 我只是想说,从记忆的角度来看,似乎唱比读要更容易记下诗词.比如,很多人能背诵苏轼的作品<水调歌头·明月几时有>,很重要的原因是大多数人同时会唱那首同名歌曲. 文/张书乐(TMT行业观察者.游戏产业时评人,人民网

和儿子一起做作业后

晚上,小儿叫我给他讲作业:三角形内角和,也就是用量角器量的办法让他有个直观记忆而已,不想他却问起了四边形的内角和.我在诧异的同时,我自己也突然得到一个确切的结论:圆的角度是多少?应该是无限大吧.于是我又联想了环和生命和转圈.这无限与有限就自然合了起来.说这世界无限的,物质是无限可分的等等,也许和这个圆或球什么的应该有些相似性的.正疑着,小儿一声怪吼中止了我的思绪:“今晚折磨到此结束,我觉觉了!” 作为人唯一能确证的只有这样一个结论:无限就是有限的无限可分性.

HDU1789(Doing Homework again)题解

HDU1789(Doing Homework again)题解 以防万一,题目原文和链接均附在文末.那么先是题目分析: [一句话题意] 给定任务分数和其截止日期,每日可完成一任务,输出当罚分尽可能小时的最小罚分. [题目分析] 由于写的时候就知道是贪心了(专项练习= =||),所以要设计贪心策略,但是应该先处理数据以便使用.由于要求罚分尽可能小,那么我们就根据罚分来排序.根据罚分从大到小排序,如果罚分相同则根据日期从小到大排序.(现在想想觉得似乎日期排不排都行..)那么我们的贪心策略应该尽可能保