NOJ 1447 大作业
来源:互联网 发布:钩针和棒针的区别知乎 编辑:程序博客网 时间:2024/06/05 15:41
大作业
时间限制(普通/Java):1000MS/3000MS 运行内存限制:65536KByte总提交:79 测试通过:29
题目描述
由于之前宅得太深,到了期末了,嘉娃还有N个大作业没有写。以嘉娃的速度,他每天能且只能完成一个大作业。但是这N门大作业都有一个截止时间,如果超过这个时间再提交的话将会没有分数。现在,嘉娃要在N天内完成N门大作业,他给了你一份有N个大作业的截止时间和分数的列表,你能帮嘉娃算出他最多能得到多少分吗?
输入
第一行一个整数N(0≤N≤1000),表示大作业的数目。接下来N行,每行两个整数。di(1≤di≤N)表示第i个大作业的截止时间,以嘉娃开始做大作业开始算;pi(1≤pi≤500)表示第i个大作业的分数。
输出
输出一个整数,表示嘉娃能得到的最多的分数。之后加一个换行。
样例输入
5
3 500
2 100
2 250
1 290
5 200
样例输出
1240
题目来源
第8届南京大学 ACM 程序设计大赛题目链接:http://acm.njupt.edu.cn/acmhome/problemdetail.do?&method=showdetail&id=1447
题目分析:同POJ 1456,数据还比POJ弱,不多说了,这里的I题 http://blog.csdn.net/tc_to_top/article/details/43150505
#include <cstdio>#include <algorithm>using namespace std;int const MAX = 1005;int fa[MAX];struct HW{ int t, s;}hw[MAX];int cmp(HW a, HW b){ return a.s > b.s;}void UF_set(){ for(int i = 0; i <= MAX; i++) fa[i] = i;}int Find(int x){ return x == fa[x] ? x : fa[x] = Find(fa[x]);}void Union(int a, int b){ int r1 = Find(a); int r2 = Find(b); if(r1 != r2) fa[r1] = r2;}int main(){ int n, sum = 0; UF_set(); scanf("%d", &n); for(int i = 0; i < n; i++) scanf("%d %d", &hw[i].t, &hw[i].s); sort(hw, hw + n, cmp); for(int i = 0; i < n; i++) { int d = Find(hw[i].t); if(d) { sum += hw[i].s; Union(d, d - 1); } } printf("%d\n", sum);}
0 0
- NOJ 1447 大作业
- NOJ 1590 大整数阶乘
- NOJ 1011 大整数加法
- 南邮 OJ 1447 大作业
- Noj
- 大作业
- 大作业
- sscanf 的应用noj——663弟弟的作业
- [noj 1395] 乾坤大挪移 (树状数组,归并排序)
- 完成数据结构大作业
- 数据库大作业
- Web程序设计大作业
- 人工智能大作业啊。。。
- 大作业进度
- 数据库大作业
- Java大作业要求
- java 大作业报告
- 操作系统大作业笔记
- android学习笔记一(基础部分)
- maven 和eclipse插件
- java复习第七课,控制语句
- 并查集 畅通工程
- iOS CocoaPods自动管理第三方开源库
- NOJ 1447 大作业
- Oracle Form之Trigger解读
- 如何避免在Block里用self造成循环引用
- Android Matrix的用法--图片的缩放及剪裁
- Android 开发避免内存泄露,无法回收
- 【自考总结】——操作系统(一)
- 【原创工具】启动图添加工具V2.1
- ECSHOP去除商品重复属性
- 心电图速成手册