题目描述 题解: 可并堆优化$dp$。 由于$ans$只由$l$与派遣人数决定,我们可以贪心选取总和$<=m$的人。 有两种选择,一种是维护小根堆,一直$pop$到弹出的总和$>m$; 另一种是维护大根堆,一直$pop$到剩下总和$<=m$; 这两种比较一定是维护大根堆更优,因为每次$pop$后剩下 ...
#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #includ... ...
分类:
其他好文 时间:
2019-01-15 20:29:48
阅读次数:
124
堆(heap) 1. 堆通常是一个可以被看做一棵树的数组对象。堆总是满足下列性质: 堆中某个节点的值总是不大于或不小于其父节点的值; 堆总是一棵完全二叉树。 根节点最大的堆叫做最大堆、大根堆或大顶堆 根节点最小的堆叫做最小堆、小根堆或小顶堆 常见的堆还有二叉堆、斐波那契堆等。 2. 堆是在程序运行时 ...
分类:
其他好文 时间:
2019-01-03 22:41:04
阅读次数:
209
维护序列的动态中位数 第一次用链表做题。。感觉指针指来指去也挺麻烦的。。 本题链表解法就是用数组模拟出一个链表,然后离线输入所有数,排序,按照输入顺序在链表里删除元素,一次性删掉两个,然后中位数指针对应移动即可 网上另外一种解法是对顶堆,所谓对顶堆,就是建立一个小根堆q1,大根堆q2,每次读入的数如 ...
分类:
其他好文 时间:
2018-12-28 22:10:42
阅读次数:
236
算法之 堆的简单介绍 一、堆的分类 大根堆:一棵完全二叉树,满足任一节点都比其孩子节点大小根堆:一棵完全二叉树,满足任一节点都比其孩子节点小 二、堆的向下调整性质 前提:节点的左右子树都是堆,但是自身不是堆 三、堆排序 内置模块 优先队列:一些元素的集合,POP操作每次执行都会从优先队列中弹出最大( ...
分类:
编程语言 时间:
2018-12-27 03:26:41
阅读次数:
209
一、准备知识 1.堆 堆(英语:heap)是计算机科学中一类特殊的数据结构的统称。堆通常是一个可以被看做一棵树的数组对象。堆总是满足下列性质: 堆中某个节点的值总是不大于或不小于其父节点的值; 堆总是一棵完全二叉树。 将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。常见的堆有二 ...
分类:
编程语言 时间:
2018-12-24 23:30:33
阅读次数:
248
一、题面 POJ2010 二、分析 堆预处理 首先可以考虑吧随便取一个点,判断两侧的最小的总费用是多少,然后相加判断是否满足条件。如果直接判断会超时,所以需要用大根堆预处理一下。先看从分数最小的往最大的预处理,先取N/2个相加,并把他们都加入到堆中,先假设这个和值是最大的,然后不断往后扫描的过程中, ...
分类:
其他好文 时间:
2018-12-18 00:07:25
阅读次数:
203
HDU5988 题意: 有n个区域,每个区域有s个人,b份饭。现在告诉你每个区域间的有向路径,每条路有容量和损坏路径的概率。问如何走可以使得路径不被破坏的概率最小。第一个人走某条道路是百分百不会损坏道路的。 思路: 对于每个人,他从起点到目的地,不损坏道路的概率是(1 - p【1】*p【2】...* ...
分类:
其他好文 时间:
2018-11-15 01:33:40
阅读次数:
209
堆(英语:heap)是计算机科学中一类特殊的数据结构的统称。堆通常是一个可以被看做一棵树的数组对象。堆总是满足下列性质: 堆中某个节点的值总是不大于或不小于其父节点的值; 堆总是一棵完全二叉树。 将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。 堆(英语:heap)是计算机科学 ...
分类:
编程语言 时间:
2018-10-30 14:55:33
阅读次数:
197
题面 用双向链表把相邻两项的差串起来,用大根堆维护价值,每次贪心取最大的$x$。取完之后打标记删掉$pre[x]$和$nxt[x]$,之后用$val[pre[x]]+val[nxt[x]]-val[x]$替换这个$x$塞进堆里去,注意边界要连上一个极值 1 #include<queue> 2 #in ...