Ignatius刚刚从第30届ACM / ICPC回到学校。现在他有很多作业要做。每个老师给他一个截止作业的截止日期。如果Ignatius在截止日期之后进行了家庭作业,老师将减少他的最终考试成绩。现在我们假设做每个老师的作业总是需要一天的时间。以Ignatius希望你帮他安排做作业的顺序来减少分数的减少。

输入

每个测试用例从正整数N(1 <= N <= 1000)开始,表示作业数。然后两行。 第一行包含N个整数,表示作业的期限,下一行包含N个整数,表示减少的分数。
输出

对于每个测试用例,应该输出减少的最小总分数,每个测试用例一行。

Sample Input

3
3
3 3 3
10 5 1
3
1 3 1
6 2 3
7
1 4 6 4 2 4 3
3 2 1 7 6 5 4

Sample Output

0
3
5Ignatius比赛回来之后,每位老师给Ignatius一个交作业的最后期限,如果交不上去就扣分。每门作业都要一天时间完成,求最少扣多少分。先输入一个T表示有T组测试数据,接下来每组数据先输入一个N,代表有N个作业,然后输入两行,第一行表示每门作业要交的日期,第二行表示对应的如果不交这门作业要扣的分数。输出要扣的最少分数。
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 struct node{
 4     int dayline;
 5     int descore;
 6     bool flag;
 7 }homework[1005];
 8 bool cmp(node a,node b)
 9 {
10     if(a.dayline!=b.dayline)
11         return a.dayline < b.dayline;  /*按期限从短到长排序*/
12     else
13         return a.descore>b.descore;  /*如果期限相同,按被扣分数从高到低来排序*/
14 }
15
16 int main()
17 {
18     int t,n,temp;
19     while(cin>>t)
20     {
21         while(t--)
22         {
23             scanf("%d",&n); /*作业的数量*/
24             for(int i = 0; i < n; i++)  /*读取作业的期限*/
25                 scanf("%d",&homework[i].dayline);
26             for(int i = 0; i < n; i++) /*读取未完成作业被扣除的分数*/
27             {
28                 scanf("%d",&homework[i].descore);
29                 homework[i].flag = true; /*标记可完成*/
30             }
31
32             sort(homework,homework+n,cmp);
33             int ans = 0; /*统计被扣除的分数*/
34             int day = 1; /*截止日期*/
35             for(int i = 0; i < n; i++)
36             {
37                if(homework[i].dayline >= day)
38                    day++;
39                 else{
40                     int p = homework[i].descore;
41                     int temp = i;
42                     for(int j =0; j < i; j++)  /*往前面搜索,查找是否有被扣分数较小的*/
43                         if(homework[j].descore < p && homework[j].flag) /*被扣分数较少 并且是可完成的(用来完成被扣分较大的作业)*/
44                         {
45                             p = homework[j].descore;
46                             temp = j;
47                         }
48
49                     ans += p;
50                     homework[temp].flag = false;  /*标记不可完成*/
51                 }
52
53
54             }
55             cout<<ans<<endl;
56         }
57     }
58     return 0;
59 }

转载于:https://www.cnblogs.com/jj81/p/7381879.html

ACM Doing Homework again相关推荐

  1. 网内计算:可编程数据平面和技术特定应用综述

    网内计算:可编程数据平面和技术特定应用综述 摘要--与云计算相比,边缘计算提供了更靠近终端设备的处理,降低了用户体验的延迟.最新的In-Network Computing范例采用可编程网络元素在数据达 ...

  2. 【ACM】杭电OJ 1789(Doing Homework again)

    http://acm.hdu.edu.cn/showproblem.php?pid=1789 cmp函数: 先按扣分由多到少进行排序,然后如果遇到扣分一样的,则先做时间少的. vis数组: 最要的事, ...

  3. 师兄帮帮忙(A Typical Homework,ACM)

    #include <cstdio> #include <iostream> #include <cstring> using namespace std; cons ...

  4. HDU 5298 Solid Geometry Homework 暴力

    Solid Geometry Homework 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5298 Description Yellowstar ...

  5. HUST 1555 A Math Homework

    1555 - A Math Homework 时间限制:1秒 内存限制:128兆 338 次提交 131 次通过 题目描述 QKL is a poor and busy guy, and he was ...

  6. HDU 1789 Doing Homework again(馋)

    意甲冠军  参加大ACM竞争是非常回落乔布斯  每一个工作都有截止日期   未完成必要的期限结束的期限内扣除相应的积分   求点扣除的最低数量 把全部作业按扣分大小从大到小排序  然后就贪阿  能完毕 ...

  7. acm题库c语言,C语言acm竞赛习题集锦.doc

    C语言acm竞赛习题集锦.doc 杭州电子科技大学 acm 习题精选 第 1 页 共 21 页 目录 1. 数塔问题 2 2. 并查集类问题 4 3. 递推类问题 9 4. 动态规划系列 10 5. ...

  8. 【DP专辑】ACM动态规划总结

    转载请注明出处,谢谢.   http://blog.csdn.net/cc_again?viewmode=list          ----------  Accagain  2014年5月15日 ...

  9. ACM比赛经验、刷题记录及模板库总结(更新中)

    前言 本文所提及的部分题目代码,可以在我的Github上找到 第一部分 经验分享及感受 第二部分 刷题记录 一.基础算法&程序语言 //strlen()函数的复杂度是O(n)要小心 //截取字 ...

最新文章

  1. amh支持java吗_跟我学Android之三 常用视图
  2. java写 IP十进制转变_java实现ip地址与十进制数相互转换
  3. 理解MYSQL MVCC 实现机制
  4. RedHat AS4 配置Yum
  5. MongoDB 权限认证
  6. .NET的一点历史故事:误入歧途,越陷越深
  7. 计算机英语一级考试试题,全国计算机一级考试试题及答案
  8. Android OpenGL Cannot create GL program: 0 GL error: 1282
  9. Webpack入门教程二
  10. 学会git bash不求人
  11. hdu-5992 Finding Hotels(kd-tree)
  12. Android黑名单自动挂断电话
  13. cadsee plus看图纸 7.2.0.1
  14. 棋盘中正方形,长方形个数
  15. python实现自定义搜索内容的天眼查爬虫
  16. 程序员的修炼之道 从小工到小工
  17. 【CityHunter】游戏进度总控,及需求设计
  18. windows下使用curl命令
  19. mysql json 数组转行
  20. flutter doctor --android-licenses

热门文章

  1. 【CI/CD2】actions,daocloud
  2. 【Linux】一步一步学Linux——cat/tac命令(38)
  3. [Qt教程] 第11篇 2D绘图(一)绘制简单图形
  4. C代码+汇编 C的 函数汇编学习分析 rep stos dword ptr [edi]
  5. 交换两个变量ab的值PHP,由[交换两个变量的值问题]理解程序的时空复杂度
  6. 记录vmware的bug failed to install hcmon deriver
  7. 使用fastcoll进行md5碰撞,两个不同的文件md5值一样。
  8. springboot使用redisTemplate 报错:APP FAILED TO START Field template in required a single bean redis工具类
  9. Pixhawk之姿态控制篇
  10. pixhawk的姿态控制算法解读