家庭作业(贪心 + 并查集)
老师在开学第一天就把所有作业都布置了,每个作业如果在规定的时间内交上来的话才有学分。每个作业的截止日期和学分可能是不同的。例如如果一个作业学分为 ,要求在 天内交,那么要想拿到这 学分,就必须在第 天结束前交。
每个作业的完成时间都是只有一天。例如,假设有 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);
}
家庭作业(贪心 + 并查集)相关推荐
- F 魏迟燕的自走棋(思维+贪心+并查集维护联通块/左部点配对边<=2的匈牙利)
https://ac.nowcoder.com/acm/contest/9984/F 参考:F 魏迟燕的自走棋(贪心+并查集) 将每个人看成一个点,武器的能力值抽象成边,这样就转化成图论的模型了. 然 ...
- Supermarket | 贪心 + 并查集
Supermarket | 贪心 + 并查集 from poj 1456 from acwing 145 时间限制 :2s 内存限制:65M Description: A supermarket ha ...
- 数据结构作业——ギリギリ eye(贪心+优先队列/贪心+并查集)
ギリギリ eye Description A.D.1999,由坠落地球的"谜之战舰"带来的 Over Technology,揭示了人类历史和远古文明之间的丝丝联系, 促使人类终止彼 ...
- poj1256(贪心+并查集)
题目链接:http://poj.org/problem?id=1456 题意:给n件商品的价格和卖出截至时间,每一个单位时间最多只能卖出一件商品,求能获得的最大利润. 思路:首先是贪心,为获得最大利润 ...
- HDU多校2 - 6763 Total Eclipse(贪心+并查集)
题目链接:点击查看 题目大意:给出一张 n 个点和 m 条边组成的无向图,现在每个点都有一个点权,对于每次操作,可以选择一个点以及其周围能够连接的所有点,令其点权减一,当某个点的点权减到 0 时,就相 ...
- poj 1456 Supermarket 贪心+并查集(个人感觉有点难判断出来
poj 1456 这第一眼还觉得只要贪心就可以了,但是emmm看了大佬的题解居然真的要用到并查集= = 大佬清晰的思路 大佬舒服的代码 #pragma warning(disable:4996) #i ...
- Kruskal算法:贪心+并查集=最小生成树
http://www.51nod.com/ Kruskal算法的高效实现需要一种称作并查集的结构.我们在这里不介绍并查集,只介绍Kruskal算法的基本思想和证明,实现留在以后讨论. Kruskal算 ...
- 最高的奖励 51Nod - 1163(贪心+并查集)
有N个任务,每个任务有一个最晚结束时间以及一个对应的奖励.在结束时间之前完成该任务,就可以获得对应的奖励.完成每一个任务所需的时间都是1个单位时间.有时候完成所有任务是不可能的,因为时间上可能会有冲突 ...
- Codeforces 437D 贪心+并查集
这个题目让我想起了上次在湘潭赛的那道跪死了的题.也是最值问题,这个也是,有n个动物园 每个都有权值 然后被m条路径相连接,保证图是连通的,然后求所有的p[i][j]之和.i,j为任意两个zoo,pij ...
- L2-007 家庭房产(并查集)
题目链接 https://pintia.cn/problem-sets/994805046380707840/problems/994805068539215872 视频讲解 https://www. ...
最新文章
- java aop 切面判断对象是否是一个类的实例
- poj-2752 Seek the Name, Seek the Fame **
- Saturn分布式调度之系统架构简介
- 论文赏析[AAAI18]面向序列建模的元多任务学习
- 数组 -- 13.2 Maximum Subarray --图解
- 中文版Cooledit2.1安装程序+插件
- Node.js安装详细步骤教程(Windows版)
- 2018年,51LA新版的那些事
- iTunes只能装C盘吗_为什么电脑软件喜欢默认安装在C盘呢?
- 数据库:一条sql语句查询每门课程都大于80分的学生姓名
- 模块*.ocx已加载,但对DllRegisterServer的调用失败,错误代码0x8002801c问题解决
- Barcode读取之barcode_para_contrast_min.hdev
- nedc和epa续航里程什么意思_NEDC、WLTP、EPA续航哪个才最靠谱?
- 【MySQL】使用MySQL
- 2018-10-29 直播课笔记
- 新消费主义下的共享经济发展趋势
- 大数据思维养成从认识大数据的本质开始
- threejs视频教程学习(4):贴图、材质、光线
- flutterapp部分手机无法打开_例举几种手机手机模拟门禁卡的方法,大同小异
- Java搭建宝塔部署实战毕设项目WMS仓库管理系统源码
热门文章
- 关于工作后定居城市的思考以及房价预测【zz】
- java做抽奖系统怎么搞_JAVA 随机抽奖系统 实现教程及代码
- 数字图像处理与Python实现-颜色空间转换-RGB颜色空间与YIQ颜色空间转换
- 软工网络15团队作业4——Alpha阶段敏捷冲刺之Scrum 冲刺博客(Day1)
- 不重复的三位数python_Python趣味案例之不重复的三位数
- 脸上长了黄褐斑怎么办
- 中年男人,你如何自我救赎
- 麻省理工学院公开课:计算机科学及编程导论 课堂笔记
- 2018-2019-2 20189201 《网络攻防实践》第八周作业
- python项目源码和注解_python源代码和注释 - 随笔分类 - 秦朗的天空 - 博客园