题意:主角打完ACM比赛回来,有一堆作业要做,每个作业有自己的deadline和score,如果不能在deadline之前完成就拿不到这个作业的分数,问主角最多能拿多少分。

题解:还是贪心策略,将作业按deadline顺序排序,用一个时间变量从前向后推,将作业逐个填入当天的内容中,如果当天的时间已经晚于该作业的deadline,就从前面的安排中找到一个可以完成该作业,且原安排的作业得分比该作业低且最少的日子来做该作业。

 1     #include<iostream>
 2     #include<algorithm>
 3     #include<climits>
 4     using namespace std;
 5     struct datatype
 6     {
 7         int deadline;
 8         int score;
 9         bool choose;
10     }a[100001];
11     bool com(const datatype& x,const datatype& y)
12     {
13         return x.deadline<y.deadline;
14     }
15     int time[100001];
16     int main()
17     {
18         int T;
19         cin>>T;
20         for(int p=1;p<=T;p++)
21         {
22             int n;
23             cin>>n;
24             for(int i=1;i<=n;i++)
25             {
26                 cin>>a[i].deadline;
27                 a[i].choose=false;
28             }
29             for(int i=1;i<=n;i++)
30             {
31                 cin>>a[i].score;
32             }
33             int t=0;
34             sort(a+1,a+n+1,com);
35             for(int i=1;i<=n;i++)
36             {
37                 if(t+1<=a[i].deadline)
38                 {
39                     time[t+1]=i;
40                     t+=1;
41                     a[i].choose=true;
42                 }
43                 else
44                 {
45                     int tip1=a[i].score,tip2=0;
46                     for(int j=1;j<=t;j++)
47                     {
48                         if(a[time[j]].score<a[i].score)
49                         {
50                             if(a[time[j]].score<tip1)
51                             {
52                                 tip2=j;
53                                 tip1=a[time[j]].score;
54                             }
55                         }
56                     }
57                     if(tip2!=0)
58                     {
59                         a[time[tip2]].choose=false;
60                         time[tip2]=i;
61                         a[i].choose=true;
62                     }
63                 }
64             }
65             int res=0;
66             for(int i=1;i<=n;i++)
67             {
68                 if(!a[i].choose)
69                 {
70                     res+=a[i].score;
71                 }
72             }
73             cout<<res<<endl;
74         }
75         return 0;
76     }

转载于:https://www.cnblogs.com/shao0099876/p/7297786.html

hdu - 1789 题解相关推荐

  1. hdu 1789题解

    http://acm.hdu.edu.cn/showproblem.php?pid=1789: 这个题目就是用贪心的思想来做,首先按分数从高到底排下序,然后在判断哪几个不能完成时用到了一个小技巧. # ...

  2. hdu 1789 贪心算法

    http://acm.hdu.edu.cn/showproblem.php?pid=1789 此题大致思路,既然要计算最少扣多少分,就要在最后时间之前把扣分最多的作业先安排了.如果扣分一样多的话,那必 ...

  3. HDU 6194 题解报告

    HDU[6194] 后缀数组+ST表 题目大意 在指定的字符串中找到仅出现k次的不同子串有几种,不同子串之间可重叠,题目在此.  做了一天的神题,之前思路一直都很混乱,直到看到同站的一位大佬的博客,e ...

  4. HDU 1593题解

    find a way to escape Problem Description 一日,话说0068与泛舟湖上.忽见岸边出现他的一大敌人elnil.0068当然不想落入elnil的魔爪,于是他就得想办 ...

  5. HDU 2102 题解(BFS 广度优先搜索 练习题)

    原题链接,但是HDU现在校外提交需要审核 欢迎来 SCPC OJ提交 知识点 : BFS(广搜/宽搜) 原题: 描述: 可怜的公主在一次次被魔王掳走一次次被骑士们救回来之后,而今,不幸的她再一次面临生 ...

  6. hdu 1789 Doing Homework again

    又是一次初始化惹的货!!! 超级水的贪心...害的我以为思路错误~~ ~ #include<iostream>#include<cstdio>#include<cmath ...

  7. hdu 2007题解

    问题: Problem Description 给定一段连续的整数,求出他们中所有偶数的平方和以及所有奇数的立方和. Input 输入数据包含多组测试实例,每组测试实例包含一行,由两个整数m和n组成. ...

  8. hdu oj1095题解

    #include <iostream> using namespace std; int main() { int a,b,sum; int i; while(cin>>a&g ...

  9. hdu oj1096题解

    #include <iostream> using namespace std; int main() { int n,i,j,k,sum; cin>>n; while(n-- ...

最新文章

  1. 解决Linux中使用google chrome浏览器出现:ERR_PROXY_CONNECTION_FAILED 代理错误,导致不能够上网
  2. How to hide index.php on nginx
  3. Mongodb 故障分享 初始化时errmsg : exception: new file allocation failure 并且长时间处于STARTUP2...
  4. [最全操作指南] 在线六个项目全部迁移Linux
  5. java spring 多数据库_java – 使用多个数据源/数据库的Spring-Hibernate
  6. java excel条件格式_Java 设置Excel条件格式(高亮条件值、应用单元格值/公式/数据条等类型)...
  7. leetcode - 98. 验证二叉搜索树
  8. 【定有惊喜】android程序员如何做自己的API接口?php与android的良好交互(附环境搭建),让前端数据动起来~...
  9. 闭合导线坐标计算表_测量员人员必备:8套工程测量公式计算表,输入参数自动得出结果...
  10. mysql可视化一月多少钱_最便宜mysql可视化
  11. android事务队列处理的实现
  12. python正则表达式怎么看_python如何使用正则表达式
  13. (二)pscc学习笔记
  14. matlab中prod函数、mean函数、median函数——小白MAT LAB学习笔记
  15. 用UCWEB浏览器上网 省流量小技巧
  16. 2022年Work-Life Balance能实现吗?
  17. 博弈论夏普利值!提高机器学习可解释性的新方法!
  18. wireshark网络分析器的学习使用
  19. Burp Scanner Report
  20. Unity Ads 中国正式落地:做玩家喜欢的广告,为游戏加分

热门文章

  1. MySQL5.6建索引时遇到 Specified key was too long; max key length is 767 bytes错误提示解决办法
  2. Android中给定一个日期判断是周几.
  3. Java ISO 8601时间格式转换
  4. ROOT/RStringView.hxx:32:37: error: ‘experimental’ in namespace ‘std’ does not name a type
  5. h5+css3基础面试题
  6. Python 于 webgame 的应用(上)
  7. mysql版本升级手册
  8. linux下查看opencv安装路径以及版本号
  9. 机器学习降维方法概括
  10. 数据结构-栈(栈的C语言实现)