码迷,mamicode.com
首页 > 其他好文 > 详细

南阳757--期末考试

时间:2015-07-29 06:16:42      阅读:100      评论:0      收藏:0      [点我收藏+]

标签:

期末考试

时间限制:1000 ms  |  内存限制:65535 KB
难度:2
 
描述
马上就要考试了,小T有许多作业要做,而且每个老师都给出来了作业要交的期限,如果在规定的期限内没
交作业就会扣期末成绩的分数,假设完成每门功课需要一天的时间,你能帮助小T扣除的分数最小吗?
 
输入
输入n,表示n门功课(n<2000),接下来n行,每行两个数a,b,分别表示交作业的最后期限,迟交扣除的分数。
(以文件结尾)
输出
输出扣除的最小分数。
样例输入
3
3 10
3 5
3 1
3
1 6
3 2
1 3
7
1 3
4 2
6 1
4 7
2 6
4 5
3 4
样例输出
0
3
5
上传者
TC_常红立
//先用sort()排一下序, 然后把元素存储在对头为最小元素的一个数组(优先队列)中,比较更新队中元素,每次取最小分数相加 → → 结果;
 1 #include <queue>
 2 #include <cstdio>
 3 #include <algorithm>
 4 using namespace std;
 5 
 6 struct deliver
 7 {
 8     int ld, fs;
 9 } num[2020];
10 
11 bool cmp(deliver ld,deliver fs)
12 {
13     if(ld.ld == fs.ld)
14     return ld.fs < fs.fs;
15     else
16     return ld.ld < fs.ld;
17 }
18 
19 int main()
20 {
21     int i, n;
22     while(~scanf("%d", &n))
23     {
24         priority_queue <int, vector<int>, greater<int> > q; 
25         for(i=0; i<n; i++)
26         scanf("%d %d", &num[i].ld, &num[i].fs);
27         sort(num, num+n, cmp);
28         int sum = 0;
29         for(i=0; i<n; i++)
30         {
31             if(q.size() < num[i].ld) q.push(num[i].fs);
32             else
33             {
34                 if(q.top() < num[i].fs)
35                 {
36                     sum += q.top();
37                     q.pop();
38                     q.push(num[i].fs);
39                 }
40                 else
41                 sum += num[i].fs;
42             }
43         }
44         printf("%d\n", sum);
45     }
46     return 0;
47 }

 

 

南阳757--期末考试

标签:

原文地址:http://www.cnblogs.com/fengshun/p/4684801.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!