实验目的:

练习贪心

实验内容:

小v上学,老师布置了n个作业,每个作业恰好需要一天做完,每个作业都有最后提交时间及其逾期的扣分。请给出小v做作业的顺序,以便扣最少的分数。
输入描述:输入包括多个测试用例。每个测试用例的第一行为正数n(1≤n≤100),表示作业数,第二行包括n个整数,表示每个作业最后提交时间(天),第三行包括n个整数,表示每个作业逾期的扣分。以输入n=0结束。
输出描述:每个测试用例对应两行输出,第一行为做作业的顺序(作业编号之间用空格分隔),第二行为最少的扣分。
输入样例:
3 //三个作业
1 3 1 //最后提交时间
6 2 3 //逾期扣分
样例输出:
1 2
3

思路:

首先,结构体记录作业,包括编号,deadline,扣分。
对数据进行升序排序,越靠后的数据,扣分越高,优先级越高,越应该先做,扣分相同时,按提交时间递减排序,分数不同时递增排序。
设置一个flag数组,初始为0,记录每个时间片有没有作业在做,有的话记录该作业的编号。
按优先级顺序,从当前要做的任务的deadline往前做,遇到第一个空闲的时间片就占坑(deadline第一生产力,扣分越多的越要做,能拖多晚拖多晚 ),flag就记录该作业的序号。
最后顺序遍历flag,非空就输出其中的作业编号,这就是做作业的顺序。

代码

#include <iostream>
#include <algorithm>
#include <utility>
#include <vector>using namespace std;
#define MAXN 1005struct homework {int no;int deadline;int score;bool operator < (const homework t) const {                      //重载< ,扣分相同时,按提交时间递减排序if (score == t.score) return this->deadline > t.deadline;else return this->score < t.score;                          //分数不同时递增排序}
};homework H[MAXN];
int flag[MAXN] = {0};        //记录该时段是否已有作业在做,0就是空,有就存该作业编号int findans(int n) {int i, j;int ans = 0;for (i = n-1; i >= 0; i--) {                    //从最后一个(扣分最多的作业)开始做for (j = H[i].deadline; j > 0; j--) {       //对照deadline,deadline前的第一个空闲做该任务if (!flag[j]) {flag[j] = H[i].no;break;}}if (j == 0) ans += H[i].score;}return ans;
}int main()
{int n, time, ans;cin >> n;while (n != 0){for (int i = 0; i < n; i++) {H[i].no = i+1;cin >> H[i].deadline;}         for (int i = 0; i < n; i++)cin >> H[i].score;              // 读入数据sort(H, H + n);                     // 对数据进行升序排序,越靠后的数据,扣分越高,越应该先做int res = findans(n);for (int i = 0; i < MAXN; i++)      //按时间做作业顺序输出作业编号if(flag[i])  cout << flag[i]<<' ';cout << '\n' << res << endl;fill(flag, flag + MAXN, 0);         //重置flagcin >> n;}return 0;
}

结果


样例,做任务1,2,扣作业3的分

四个作业deadline都是1,做作业3,这样扣分最小

作业3扣分最多,作业2其次,依次做这两个,总扣分最小

作业1,2扣分最多,虽然都还没到deadline,但先做扣分多的这样才能使结果最小,所以贪心的时候要按扣分来贪心,如果按时间就错了。

总结:

贪心时要选取好要贪什么,像本题就要贪扣分,扣分多的一定要做,而且一定要拖到deadline前做,给其他作业留出空闲。
另外学习了重载函数。

作业扣最少的分(要选好贪心目标)相关推荐

  1. 淘宝怎么选品技巧秘籍,做淘宝7分靠选货品

    淘宝怎么选品技巧秘籍,做淘宝7分靠选货品#电商#电商创业#电商运营 做淘宝, 7 分靠选品, 3 分靠运营.视频一定能够缓解你现在缺产品,还不知道选产品的苦恼.通过跨平台选品,能够找到一些利润又高,同 ...

  2. 跨境电商亚马逊核心要求“七分靠选品,三分靠运营”

    亚马逊运营的核心要求: 产品为王 亚马逊电商时间越长会越觉得产品为王"是非常正确的,亚马逊电商电商圈流行着一句话"七分靠选品,三分靠运营",做电商最核心的四个要素:选品, ...

  3. 【蓝桥杯05】:小明每天都要练功,练功中的重要—项是梅花桩。小明练功的梅花桩排列成n行m列,相邻两行的距离为1,相邻两列的距离也为;小明想知道,在不掉下梅花桩的情况下,自己最少要多少步可以移动到目标。

    问题描述: 小明每天都要练功,练功中的重要一项是梅花桩.         小明练功的梅花桩排列成n行m列,相邻两行的距离为1,相邻两列的距离也为1.         小明站在第1行第1列上,他要走到第 ...

  4. 北航数理统计大作业_数学146分上岸复旦大学大数据学院统计学,备考经验分享!...

    先说一下我的基础,英语水平一直还行,考过一次六级568分,但可能因此没有重视英语最后还是不高:数学是大学一直就没怎么听课学不明白,线代基础几乎全忘光了,就是Ax=b有解条件都不知道的程度: 专业课有一 ...

  5. 一台电脑怎么接两个显示器_电脑数码类目显示器 篇二:11.11抄作业,个人消费级显示器怎么选--20款好价显示器推荐_显示器...

    2020-11-09 21:56:2572点赞390收藏91评论 想攒一台电竞主机.家用主机.酷炫主机无从下手?想省钱又怕性能不达标?值得买帮你打造定制化DIY装机工具,自助全网比价装机,提供最适合的 ...

  6. 600分理科选计算机专业,天津600分左右,计算机或电子信息专业,怎么选院校?...

    原标题:天津600分左右,计算机或电子信息专业,怎么选院校? 想学计算机或电子信息,一定是偏理选科对吧!所谓的换算,是指的高考后出了全天津市不分文理的总排名后,如何换算成相当于天津市往届如19年理科排 ...

  7. 大工17春 c 语言,大工20春《C/C++语言程序设计》在线作业【答案100分】

    大工20春<C/C++语言程序设计>在线作业1 共20道题 总分:100分 答题中 单选题 判断题 一.单选题 共10题,50分 1 5分 一个函数功能不太复杂,但要求被频繁调用,则应把它 ...

  8. oracle数据库作业1,北京语言20秋《Oracle数据库开发》作业1(100分)

    -[北京语言大学]20秋<Oracle数据库开发>作业1 试卷总分:100    得分:100 第1题,Orcacle提供了(),用于支持采用向导方式创建数据库. A.SQL*Plus B ...

  9. 团队博客作业-团队个人贡献分分配规则

    每个团队开一个讨论会,协商讨论团队贡献分的分配方式.每个团队的团队贡献分为50分/人.分数为自然数,并且每个人分数不能相同,所有人分数的总和为50*N,其中N为团队的人数.请详细说明分数的分配规则. ...

最新文章

  1. 飞桨博士会第三期来啦!中国深度学习技术俱乐部诚邀您加入
  2. 指定域的名称或安全标识(SID)与该域的信任信息不一致
  3. SSL、SSH、OpenSSH、OpenSSL 区别
  4. python测试之道第5章模拟网络请求
  5. 巧用参数组件和过滤组件,教你快速定位目标数据
  6. 【5分钟搞定】如何将py打包成exe可执行文件
  7. 【MVC】ASP.NET MVC5 使用MiniProfiler 监控MVC性能
  8. cocos2d-x 调色
  9. 分块编码(Transfer-Encoding:chunked)
  10. Linux 图片传输功能c/c++(初版)
  11. valhalla 插件_Valhalla项目的价值
  12. 台式机电脑配置单_2020年电脑配置单重点硬件参考
  13. sudo: sorry, you must have a tty to run sudo
  14. cmd windows 命令sleep_最实在的9个黑客命令!确定不学习下?
  15. 非广告--推荐Dynatrace:树立数字化性能管理DPM标杆
  16. uniapp scroll-view组件横向滚动不生效
  17. 按头安利 好看又实用的SolidEdge 3d模型素材看这里
  18. 使用逐浪CMS做网站如何引用Markdown编辑器
  19. LENOVO的Y430P笔记本无线网卡BCM43142在ubuntu 14.04系统WIF上网不稳定
  20. 使用ZAP寻找敏感文件和目录

热门文章

  1. AFNetworking速成教程(1)
  2. 健康时代健身房管理系统的设计与实现
  3. 【UVa】【DP】1633 Dyslexic Gollum
  4. JetBrains 使用邮箱进行学生认证
  5. html 百分比饼状图,如何开发一个百分比饼状图动画
  6. 史海峰:成为技术领导者 从技术到管理的必经之路丨声网开发者创业讲堂 • 第 5 期
  7. Excel如何快速将一个工作表复制到多个工作簿中
  8. 国内最美最豪华图书馆!我一定要考上!
  9. 此系统禁止运行脚本解决办法
  10. Java期末作品设计——十二星座