nyoj757 期末考试【队列】
2015-07-28 15:54
381 查看
期末考试
时间限制:1000 ms | 内存限制:65535 KB
难度:2
描述
马上就要考试了,小T有许多作业要做,而且每个老师都给出来了作业要交的期限,如果在规定的期限内没
交作业就会扣期末成绩的分数,假设完成每门功课需要一天的时间,你能帮助小T扣除的分数最小吗?
输入输入n,表示n门功课(n<2000),接下来n行,每行两个数a,b,分别表示交作业的最后期限,迟交扣除的分数。
(以文件结尾)输出输出扣除的最小分数。样例输入
样例输出
[/code]
时间限制: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
分析:
没有啥好说的,代码简单明了。不知道队列的自己去预习功课
代码:
#include<stdio.h> #include<string.h> #include<queue> #include<algorithm> using namespace std; struct node { int day;//期限 int gk;//分数 }pre[2000]; bool cmp(node a,node b) { if(a.day<b.day) return true; if(a.day==b.day&&a.gk<b.gk) return true; else return false; } /*struct node { int day;//期限 int gk;//分数 }pre[2000];*/ int main() { int n; int sum; priority_queue<int,vector<int>,greater<int> >s; while(scanf("%d",&n)!=EOF) { while(!s.empty()) s.pop(); for(int i=0;i<n;i++) scanf("%d%d",&pre[i].day,&pre[i].gk); sort(pre,pre+n,cmp); sum=0; for(int i=0;i<n;i++) { if(s.size()<pre[i].day) s.push(pre[i].gk); else { int x=s.top(); if(x<pre[i].gk) { s.pop(); s.push(pre[i].gk); sum+=x;} else sum+=pre[i].gk; } } printf("%d\n",sum); } return 0; }
[/code]
相关文章推荐
- Oracle数据库再次安装
- NY55 懒省事的小明
- JS 自定义正则表达式
- iOS动画特效
- MVVM实战
- eclipse启动tomcat服务几种错误总结
- HDU3729 I'm Telling the Truth(二分图最大匹配)
- js用正则表达式去除字符串左右空格
- 将一个十六进制字符串转换为十进制数值的问题
- poj 2585 Window Pains(拓扑排序)(经典)(困难)
- Qt使用的一些总结
- Android RecyclerView
- error LNK2001: unresolved external symbol __imp__SetupDiGetDeviceInterfaceDetailA@24
- 对话框未进入PreTranslateMessage函数
- HDU3729 I'm Telling the Truth(二分图最大匹配)
- iOS调用相机,相册,上传头像
- iOS中UITextField 使用全面解析
- 算法竞赛入门经典--第7章,迭代加深搜索---埃及分数
- CentOS 7.0编译安装Nginx+MySQL+PHP
- (4.4.1.6)android ANR产生原因和解决办法