![](https://img-blog.csdnimg.cn/20210504204749467.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
二叉堆
二叉堆
JA_yichao
这个作者很懒,什么都没留下…
展开
-
YbtOJ 数据结构课堂过关 例4 工作安排【小根堆】【反悔贪心】
思路 这道题我一开始想到一个憨批做法在YbtOJ上过了正当我沾沾自喜的时候—— 实际上正解是: 考虑贪心,如果当前工作可选,那么就把它加入要做行列中,否则就在要做的堆中选择一个利润最小的(堆头)踢出。 代码 #include<algorithm> #include<iostream> #include<cstring> #include<cstdio> #include<queue> using namespace std; long long..原创 2021-05-05 11:02:32 · 138 阅读 · 0 评论 -
YbtOJ 数据结构课堂过关 例3 龙珠游戏【大根堆】【贪心】
思路 这道题我们可以构建一个next数组,初始化 next[i]=i+1next[i]=i+1next[i]=i+1,表示当前i的后一个没被取的数是多少。 然后通过next数组来跳取下一位龙珠,会节省很多时间。 结合贪心,每次取最大的,然后如果最大的取不了(最大的龙珠在最后一位)就取第二大的。 代码 #include<iostream> #include<cstring> #include<cstdio> #include<queue> using nam..原创 2021-05-05 09:19:21 · 159 阅读 · 0 评论 -
YbtOJ 数据结构课堂过关 例2 序列合并【大根堆】※
思路 这道题我们可以从题目中得到一个简单的规律: a1+b1<a1+b2<a1+b3a1+b1<a1+b2<a1+b3a1+b1<a1+b2<a1+b3 a2+b1<a2+b2<a2+b3a2+b1<a2+b2<a2+b3a2+b1<a2+b2<a2+b3 a3+b1<a3+b2<a3+b3a3+b1<a3+b2<a3+b3a3+b1<a3+b2<a3+b3 我们可以从第一列中找一个最小的和,记录..原创 2021-05-04 22:04:52 · 116 阅读 · 0 评论 -
YbtOJ 数据结构课堂过关 例1 合并果子【大根堆】
思路 这道题其实可以算是大根堆的模板题了,把大根堆当成小根堆来用就好了。 代码 #include<iostream> #include<cstdio> #include<queue> using namespace std; int n,a[100010],ans; priority_queue<int> q; int main() { cin>>n; for(int i=1; i<=n; i++) { scanf("%d..原创 2021-05-04 20:48:21 · 108 阅读 · 0 评论