(都是比较简单的典型的而且都是小根堆的例题)

  • p1090

合并果子【传送门】

算法分析:要尽量使用最小的体力合并完所有果子,那么每次合并的两堆果子应该是这所有堆中最小的一个(因为越先合并的堆要被算的次数越多),因此定义一个小根堆heap,每次合并最小(其实就是最上面的)的两堆,然后把这两堆的和再放入堆里,再次合并最小的两堆……直到合并完成。定义ans加上每次合并所需能量,最后输出ans;

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
using namespace std;
int n,a,ans;
int heap[],heap_size;
int get(){
int now,next,res;
res=heap[];
heap[]=heap[heap_size--];
now=;
while(now*<=heap_size){
next=now*;
if(next<heap_size&&heap[next+]<heap[next])next++;
if(heap[now]<=heap[next])break;
swap(heap[now],heap[next]);
now=next;
}
return res;
}
void put(int d){
int now,next;
heap[++heap_size]=d;
now=heap_size;
while(now>){
next=now/;
if(heap[now]>=heap[next])break;
swap(heap[now],heap[next]);
now=next;
}
}
int main(){
scanf("%d",&n);
for(int i=;i<=n;i++){
cin>>a;
put(a);
}
for(int i=;i<n;i++){
int r1=get();
int r2=get();
ans+=(r1+r2);
put(r1+r2);
}
cout<<ans<<endl;
}

  • p1334

瑞瑞的木板【传送门】

这个题和上面的合并果子基本一毛一样qwq,真的可以一个代码过。

但是忍不住要吐槽一下:上面我本来用的是scanf,结果评测

它wa掉了wa掉了!!!我改成cin过了qwq


  • p1177

快速排序【传送门】

第一次ac(很久很久以前)sort过的

#include<bits/stdc++.h>
using namespace std;
int n;
int a[];
int main()
{
cin>>n;
for(int i=;i<=n;i++)
cin>>a[i];
sort(a+,a+n+);
for(int i=;i<=n;i++)
cout<<a[i]<<" ";
return ;
}//防止头重脚轻,我们用万能头也好看一点qwq
(我是不会告诉你我是因为搞不懂哪个库对应什么才这么讲的)

学了堆以后,堆排序:

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
using namespace std;
int n,a,b;
int heap[],heap_size;
int get(){
int now,next,res;
res=heap[];
heap[]=heap[heap_size--];
now=;
while(now*<=heap_size){
next=now*;
if(next<heap_size&&heap[next+]<heap[next])next++;
if(heap[now]<=heap[next])break;
swap(heap[now],heap[next]);
now=next;
}
return res;
}
void put(int d){
int now,next;
heap[++heap_size]=d;
now=heap_size;
while(now>){
next=now/;
if(heap[now]>=heap[next])break;
swap(heap[now],heap[next]);
now=next;
}
}
int main(){
scanf("%d",&n);
for(int i=;i<=n;i++){
scanf("%d",&a);
put(a);
}
for(int i=;i<n;i++)
printf("%d ",get());
printf("%d",get());
return ;
}

end-

【堆】【洛谷例题】p1090 p1334 p1177的更多相关文章

  1. 洛谷【P1090】合并果子&&洛谷【P1334】瑞瑞的木板

    浅谈堆:https://www.cnblogs.com/AKMer/p/10284629.html 合并果子题目传送门:https://www.luogu.org/problemnew/show/P1 ...

  2. 堆学习笔记(未完待续)(洛谷p1090合并果子)

    上次讲了堆,别人都说极其简单,我却没学过,今天又听dalao们讲图论,最短路又用堆优化,问懂了没,底下全说懂了,我???,感觉全世界都会了堆,就我不会,于是我决定补一补: ——————来自百度百科 所 ...

  3. 洛谷 P3377 【模板】左偏树(可并堆)

    洛谷 P3377 [模板]左偏树(可并堆) 题目描述 如题,一开始有N个小根堆,每个堆包含且仅包含一个数.接下来需要支持两种操作: 操作1: 1 x y 将第x个数和第y个数所在的小根堆合并(若第x或 ...

  4. 洛谷.5283.[十二省联考2019]异或粽子(可持久化Trie 堆)

    LOJ 洛谷 考场上都拍上了,8:50才发现我读错了题=-= 两天都读错题...醉惹... \(Solution1\) 先求一遍前缀异或和. 假设左端点是\(i\),那么我们要在\([i,n]\)中找 ...

  5. 2-SAT问题学习笔记+例题[洛谷P4792]

    一个不错的2-SAT文章:传送门 问题初入 什么是2-SAT SAT是适定性(Satisfiability)问题的简称 .一般形式为k-适定性问题,简称 k-SAT. 首先,把「2」和「SAT」拆开. ...

  6. 洛谷P1484 种树&洛谷P3620 [APIO/CTSC 2007]数据备份 题解(堆+贪心)

    洛谷P1484 种树&洛谷P3620 [APIO/CTSC 2007]数据备份 题解(堆+贪心) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/132 ...

  7. 【同余最短路】【例题集合】洛谷P3403 跳楼机/P2371 墨墨的等式

    接触到的新内容,[同余最短路]. 代码很好写,但思路不好理解. 同余最短路,并不是用同余来跑最短路,而是通过同余来构造某些状态,从而达到优化时间空间复杂度的目的.往往这些状态就是最短路中的点,可以类比 ...

  8. 洛谷P3377 【模板】左偏树(可并堆) 题解

    作者:zifeiy 标签:左偏树 这篇随笔需要你在之前掌握 堆 和 二叉树 的相关知识点. 堆支持在 \(O(\log n)\) 的时间内进行插入元素.查询最值和删除最值的操作.在这里,如果最值是最小 ...

  9. 洛谷 P4272 - [CTSC2009]序列变换(堆)

    洛谷题面传送门 u1s1 在我完成这篇题解之前,全网总共两篇题解,一篇使用的平衡树,一篇使用的就是这篇题解讲解的这个做法,但特判掉了一个点,把特判去掉在 BZOJ 上会 WA 一个点. 两篇题解都异常 ...

随机推荐

  1. Vue相关开源项目库汇总

    https://github.com/opendigg/awesome-github-vue http://www.opendigg.com/tags/front-vue README.md 内容 U ...

  2. linux 下常用的50条命令

    1.find 查换文件.目录和权限 find . -name aaa.txt 在当前目录及子目录查找文件名为aaa.txt文件 find . -name "*.txt" -o -n ...

  3. SRD_PreloaderCore

    预加载 Preloader CoreVersion 1.10SumRndmDde This plugin requires the Game Upgrade plugin:http://sumrndm ...

  4. MySql 版本

    MySql 版本: netformwork 2.0 netformwork 4.0

  5. JavaScript中创建对象的几种模式

    代码如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...

  6. jQuery常见用法

    jQuery有好多版本本,无法同时引用两个不同的版本,容易造成混乱,用哪一个,调用哪一个.\ jQuery引用到<head></head>中,页面加载时就需要特效调用这些方法. ...

  7. 转--Python re模块 验证11位手机号

      一.常用正则表达式符号和语法:   '.' 匹配所有字符串,除\n以外 ‘-’ 表示范围[0-9] '*' 匹配前面的子表达式零次或多次.要匹配 * 字符,请使用 \*. '+' 匹配前面的子表达 ...

  8. 解决mysql连接报“Communications link failure”错误

    <!--定义在从数据库获取新连接失败后重复尝试的次数.默认值: 30 :小于等于0表示无限次--> <property name="acquireRetryAttempts ...

  9. Spring:容器基本用法

    bean是Spring 最核心的东西,打个比方,假设Spring是一个水桶,那么bean就是水桶里的水,水桶离开水后,就没啥作用了.我们先来看一下bean的定义: public class Perso ...

  10. Java8过滤器(Filter)

    1.在Java之前对List进行过滤的方式 public class BeforeJava8 { public static void main(String[] args) { List<Pe ...