这种题目很容易就联想到独立算贡献,某条边的贡献就是他的权值和底下叶子节点的数量相关。 我们用优先队列的方法取最大,记得算大小的时候是按减一半的贡献再算 #include<bits/stdc++.h> using namespace std; typedef long long ll; typedef ...
分类:
其他好文 时间:
2020-09-17 13:36:21
阅读次数:
28
队列:先进先出 头文件:<queue> 基本操作: queue<Type>q; //定义队列,Type可以系统定义的数据类型,也可以是自己定义的结构体类型 q.push(item); //把item放入队列的尾部 q.front(); //返回队首元素,但不会删除 q.pop(); //删除队首元素 ...
分类:
其他好文 时间:
2020-07-31 12:28:58
阅读次数:
87
题目描述 n,m<=5e5,x<=1e3 题解 想了一下就想出了log^2的,之后刚了一个下午尝试去掉一个log结果发现把set改成优先队列就过了 log^2的自然做法: 在线段树上挂加进去的数,如果下传的话时间会假,因此不下传标记 弹栈就单点查询,把经过的所有区间内时间最大的弹掉,第二大的就是新的 ...
分类:
其他好文 时间:
2020-07-30 01:12:16
阅读次数:
62
为一个特定的任务选择最好的数据结构和算法是开发高性能软件的一个关键。 数据结构是以某种形式将数据组织在一起的集合(collection)。数据结构不仅存储数据,还支持访问和处理数据的操作。 在面向对象思想里,一种数据结构也被认为是一个容器(container)或者容器对象(container obj ...
分类:
其他好文 时间:
2020-07-29 17:53:03
阅读次数:
74
线段树or优先队列+dp E. Lunar New Year and Red Envelopes 题目大意: 题解: \(dp[i][j]\) 表示到时间 \(i\) 打扰了 \(j\) 次获得的最少的硬币数量 因为如果这个时间点有东西拿,那么必须按照策略拿,先预处理每一个时间点如果要拿的东西,然后 ...
分类:
其他好文 时间:
2020-07-29 14:52:00
阅读次数:
69
左偏树 定义 左偏树(英语:leftist tree或leftist heap),也可称为左偏堆、左倾堆,是计算机科学中的一种树,是一种优先队列实现方式,属于可并堆,在信息学中十分常见,在统计问题、最值问题、模拟问题和贪心问题等等类型的题目中,左偏树都有着广泛的应用。斜堆是比左偏树更为一般的数据结构 ...
分类:
其他好文 时间:
2020-07-29 12:45:04
阅读次数:
87
prim 先将一个点加入集合中,维护一个dis数组,表示该点距集合中的点的最小距离,每次选取dis的最小值,并把那个点加入集合,更新dis。 可以用优先队列优化 kruskal 把所有的边按边权从小到大排序,利用并查集维护集合关系,对于每条边,若两点不在同一集合,则把两点连接。 Boruvka 假设 ...
分类:
其他好文 时间:
2020-07-27 16:08:42
阅读次数:
75
既然是队列那么先要包含头文件#include <queue>, 他和queue不同的就在于我们可以自定义其中数据的优先级, 让优先级高的排在队列前面,优先出队 优先队列具有队列的所有特性,包括基本操作,只是在这基础上添加了内部的一个排序,它本质是一个堆实现的 和队列基本操作相同: top 访问队头元 ...
分类:
编程语言 时间:
2020-07-23 16:30:46
阅读次数:
89
Solution: Dijkstra (大概读作:迪杰斯特拉?) 算法思想: 给定一张n个点,m条边的图,起点为s。求起点s到图中所有点的最短路径(单源最短路。dis[i]表示从起点到i的最短距离。vis[i]表示此点是否已被标记确定为最短。 1、初始化dis[s]=0,其余结点dis为正无穷大。 ...
分类:
编程语言 时间:
2020-07-19 00:39:57
阅读次数:
85
Description 在黑板上写了N个正整数组成的一个数列,进行如下操作: 每次擦去其中的两个数a和b,然后在数列中加入一个数a×b+1,如此下去直至黑板上 剩下一个数,在所有按这种操作方式最后得到的数中,最大的为max,最小的为min, 则该数列的极差定义为M=max-min。 请你编程,对于给 ...
分类:
其他好文 时间:
2020-07-18 16:12:58
阅读次数:
81