老师在开学第一天就把所有作业都布置了,每个作业如果在规定的时间内交上来的话才有学分。每个作业的截止日期和学分可能是不同的。例如如果一个作业学分为 ,要求在 天内交,那么要想拿到这  学分,就必须在第  天结束前交。

每个作业的完成时间都是只有一天。例如,假设有 7 次作业的学分和完成时间如下:

最多可以获得  学分,其中一个完成作业的次序为 ,注意可能还有其他方法。

你的任务就是找到一个完成作业的顺序获得最大学分。

输入格式

第一行一个整数 ,表示作业的数量;

接下来  行,每行包括两个整数,第一个整数表示作业的完成期限,第二个数表示该作业的学分。

输出格式

输出一个整数表示可以获得的最大学分。保证答案不超过 C/C++ 的 int 范围。

样例

样例输入

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

样例输出

15

数据范围与提示

题目链接:https://loj.ac/problem/10008

思路:其实还是简单的贪心,按学分从高到低排序,然后顺序的选择结束时间,从这个时间一直往前找,直到找到一个没有用过的时间点,此时用掉这个时间即可(标记),如果暴力找的话肯定超时,所以我采用并查集来找,首先f都指向自己,自己被占用后指向前一个没有被占有的点,回溯标记即可。

代码如下:

#include<bits/stdc++.h>
#define N 1000010
using namespace std;
int f[N];
int n,flag;
struct node
{int e,s;
}eg[N];
bool cmp(node x,node y)
{if(x.s==y.s)return x.e<y.e;return x.s>y.s;
}
void init()
{for(int i=0;i<N;i++)f[i]=i;
}
int check(int x)
{if(x<=0)return x;else if(x==f[x]){f[x]=x-1;flag=1;return f[x];}else return f[x]=check(f[x]);
}
int main()
{init();scanf("%d",&n);for(int i=0;i<n;i++)scanf("%d%d",&eg[i].e,&eg[i].s);sort(eg,eg+n,cmp);int ans=0;for(int i=0;i<n;i++){flag=0;f[eg[i].e]=check(eg[i].e);if(flag)ans+=eg[i].s;}printf("%d\n",ans);
}

家庭作业(贪心 + 并查集)相关推荐

  1. F 魏迟燕的自走棋(思维+贪心+并查集维护联通块/左部点配对边<=2的匈牙利)

    https://ac.nowcoder.com/acm/contest/9984/F 参考:F 魏迟燕的自走棋(贪心+并查集) 将每个人看成一个点,武器的能力值抽象成边,这样就转化成图论的模型了. 然 ...

  2. Supermarket | 贪心 + 并查集

    Supermarket | 贪心 + 并查集 from poj 1456 from acwing 145 时间限制 :2s 内存限制:65M Description: A supermarket ha ...

  3. 数据结构作业——ギリギリ eye(贪心+优先队列/贪心+并查集)

    ギリギリ eye Description A.D.1999,由坠落地球的"谜之战舰"带来的 Over Technology,揭示了人类历史和远古文明之间的丝丝联系, 促使人类终止彼 ...

  4. poj1256(贪心+并查集)

    题目链接:http://poj.org/problem?id=1456 题意:给n件商品的价格和卖出截至时间,每一个单位时间最多只能卖出一件商品,求能获得的最大利润. 思路:首先是贪心,为获得最大利润 ...

  5. HDU多校2 - 6763 Total Eclipse(贪心+并查集)

    题目链接:点击查看 题目大意:给出一张 n 个点和 m 条边组成的无向图,现在每个点都有一个点权,对于每次操作,可以选择一个点以及其周围能够连接的所有点,令其点权减一,当某个点的点权减到 0 时,就相 ...

  6. poj 1456 Supermarket 贪心+并查集(个人感觉有点难判断出来

    poj 1456 这第一眼还觉得只要贪心就可以了,但是emmm看了大佬的题解居然真的要用到并查集= = 大佬清晰的思路 大佬舒服的代码 #pragma warning(disable:4996) #i ...

  7. Kruskal算法:贪心+并查集=最小生成树

    http://www.51nod.com/ Kruskal算法的高效实现需要一种称作并查集的结构.我们在这里不介绍并查集,只介绍Kruskal算法的基本思想和证明,实现留在以后讨论. Kruskal算 ...

  8. 最高的奖励 51Nod - 1163(贪心+并查集)

    有N个任务,每个任务有一个最晚结束时间以及一个对应的奖励.在结束时间之前完成该任务,就可以获得对应的奖励.完成每一个任务所需的时间都是1个单位时间.有时候完成所有任务是不可能的,因为时间上可能会有冲突 ...

  9. Codeforces 437D 贪心+并查集

    这个题目让我想起了上次在湘潭赛的那道跪死了的题.也是最值问题,这个也是,有n个动物园 每个都有权值 然后被m条路径相连接,保证图是连通的,然后求所有的p[i][j]之和.i,j为任意两个zoo,pij ...

  10. L2-007 家庭房产(并查集)

    题目链接 https://pintia.cn/problem-sets/994805046380707840/problems/994805068539215872 视频讲解 https://www. ...

最新文章

  1. java aop 切面判断对象是否是一个类的实例
  2. poj-2752 Seek the Name, Seek the Fame **
  3. Saturn分布式调度之系统架构简介
  4. 论文赏析[AAAI18]面向序列建模的元多任务学习
  5. 数组 -- 13.2 Maximum Subarray --图解
  6. 中文版Cooledit2.1安装程序+插件
  7. Node.js安装详细步骤教程(Windows版)
  8. 2018年,51LA新版的那些事
  9. iTunes只能装C盘吗_为什么电脑软件喜欢默认安装在C盘呢?
  10. 数据库:一条sql语句查询每门课程都大于80分的学生姓名
  11. 模块*.ocx已加载,但对DllRegisterServer的调用失败,错误代码0x8002801c问题解决
  12. Barcode读取之barcode_para_contrast_min.hdev
  13. nedc和epa续航里程什么意思_NEDC、WLTP、EPA续航哪个才最靠谱?
  14. 【MySQL】使用MySQL
  15. 2018-10-29 直播课笔记
  16. 新消费主义下的共享经济发展趋势
  17. 大数据思维养成从认识大数据的本质开始
  18. threejs视频教程学习(4):贴图、材质、光线
  19. flutterapp部分手机无法打开_例举几种手机手机模拟门禁卡的方法,大同小异
  20. Java搭建宝塔部署实战毕设项目WMS仓库管理系统源码

热门文章

  1. 关于工作后定居城市的思考以及房价预测【zz】
  2. java做抽奖系统怎么搞_JAVA 随机抽奖系统 实现教程及代码
  3. 数字图像处理与Python实现-颜色空间转换-RGB颜色空间与YIQ颜色空间转换
  4. 软工网络15团队作业4——Alpha阶段敏捷冲刺之Scrum 冲刺博客(Day1)
  5. 不重复的三位数python_Python趣味案例之不重复的三位数
  6. 脸上长了黄褐斑怎么办
  7. 中年男人,你如何自我救赎
  8. 麻省理工学院公开课:计算机科学及编程导论 课堂笔记
  9. 2018-2019-2 20189201 《网络攻防实践》第八周作业
  10. python项目源码和注解_python源代码和注释 - 随笔分类 - 秦朗的天空 - 博客园