随笔分类 - 数据结构——堆/优先队列
摘要:题目传送门 Facer帮父亲 题目背景 Facer可是一个孝顺的孩纸呦 题目描述 Facer的父亲是一名经理,现在总是垂头丧气的。 Facer问父亲,怎么啦?父亲说,公司出了点问题啊。 公司管理着N个风景点,每个风景点都有不少人来参观。 可是现在!人民投诉票价太高了,他不得不调整票价 具体来说,第i
阅读全文
摘要:题目传送门 棘手的操作 题目描述 有N个节点,标号从1到N,这N个节点一开始相互不连通。第i个节点的初始权值为a[i],接下来有如下一些操作: U x y: 加一条边,连接第x个节点和第y个节点 A1 x v: 将第x个节点的权值增加v A2 x v: 将第x个节点所在的连通块的所有节点的权值都增加
阅读全文
摘要:题目传送门 逃跑的Barn 题目描述 It's milking time at Farmer John's farm, but the cows have all run away! Farmer John needs to round them all up, and needs your hel
阅读全文
摘要:前言 之前我一直都这么以为:$Fibonacci$堆虽然快,但是代码复杂度反人类;二项堆打起来麻烦的死,而且又难理解又难调;综合起来还是左偏树最好!!! 直到我知道了配对堆这个东西。。。。。。 我$HolseLee$就是省选爆零,暴力分都拿不到,也绝不会学左偏树以外的可并堆!呵呵,配对堆真快,爆了左
阅读全文
摘要:今天考试的时候遇到了一道题需要路径计数,然而蒟蒻从来没有做过,所以在考场上真的一脸懵逼。然后出题人NaVi_Awson说明天考试还会卡SPFA,吓得我赶紧又来学一波堆优化的Dijkstra(之前只会SPFA。。。 堆优化Dijkstra 其实Dijkstra的思想很简单。SPFA是以边为基础的最短路
阅读全文
摘要:题目传送门 数字序列 题目描述 给定一个整数序列 a1,a2,⋅⋅⋅,an ,求出一个递增序列 b1<b2<⋅⋅⋅<bn ,使得序列 ai 和 bi 的各项之差的绝对值之和 ∣a1−b1∣+∣a2−b2∣+⋅⋅⋅+∣an−bn∣ 最小。 输入输出格式 输入格式: 第一行为
阅读全文
摘要:题目传送门 荷马史诗 Description 追逐影子的人,自己就是影子。 ——荷马 Allison 最近迷上了文学。她喜欢在一个慵懒的午后,细细地品上一杯卡布奇诺,静静地阅读她爱不释手的《荷马史诗》。但是由《奥德赛》和《伊利亚特》组成的鸿篇巨制《荷马史诗》实在是太长了,Allison 想通过一种编
阅读全文
摘要:题目传送门 取数 题目描述 在一个n行m列的数阵中,你须在每一行取一个数(共n个数),并将它们相加得到一个和。对于给定的数阵,请你输出和前k小的取数方法。 输入输出格式 输入格式: 第一行,三个数n,m,k。 第2~n+1行,每行m个正整数 输出格式: 一行共k个数,代表在每一行取一个数前k小的加和
阅读全文
摘要:题目传送门 题目描述 你在一家 IT 公司为大型写字楼或办公楼(offices)的计算机数据做备份。然而数据备份的工作是枯燥乏味的,因此你想设计一个系统让不同的办公楼彼此之间互相备份,而你则坐在家中尽享计算机游戏的乐趣。 已知办公楼都位于同一条街上。你决定给这些办公楼配对(两个一组)。每一对办公楼可
阅读全文
摘要:题目传送门 Supermarket Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 15192 Accepted: 6855 Description A supermarket has a set Prod of products
阅读全文
摘要:题目传送门 分析: 好吧,其实没什么好分析的,左偏树裸题。 Code:
阅读全文
摘要:题目传送门 分析:刚看到题目是有点没方向,(毕竟我这蒟蒻才刚学左偏树)然后看了看别的大佬的博客以后大概懂了,将每个骑士丢进一颗左偏树中,然后进行dfs对每一个城池进行搜索,如果某一个骑士在该城池死亡就将其从弹出并记录。然后过程中下放标记就差不多OK了。具体还是看代码吧。 Code:
阅读全文
摘要:题目传送门 分析:首先看小范围的数据,很容易可以想到用DP,方程为f[i][j]=max(f[i-1][j],f[i-2][j-1]+a[i]),f[i][j]表示到第i个坑种了j棵树的最大收益。但是很显然不能过全部数据(亲测只有五十分)。正解以该要用优先队列,将所有的数据丢进一个大根堆中维护,然后
阅读全文
摘要:题目传送门 分析:题目中提到了优先级,很显然这题要用优先队列+模拟。题目中很多细节需要注意,还是在代码中解释吧,这里我用的是手打的堆。 Code:
阅读全文
摘要:题目传送门 分析:这题和另外一个题目中位数非常相似,有兴趣可以先看看,比这一题简单。首先暴力模拟还是别想了,估计30%的数据都有点悬。正解应该是用二叉堆。但是如果用一个堆当然不方便,所以建两个堆,一个大根堆,一个小根堆,每次只要出现询问操作,就把小根堆的堆顶丢进大根堆中维护,然后输出就可以了,但是要
阅读全文
摘要:题目传送门 分析,首先要查找一个认识的猴子群体(简称猴群)中力气最大的猴子,又要合并两个打完架的猴群,很明显是可并堆的性质,所以这题就是一个左偏树模板。那么套模板就可以了,不过注意,因为要把力气最大的猴子的力气减半,所以就先把它从猴群中删除,减半后放回去再求现在猴群中的力气最大值就可以了。 Code
阅读全文
摘要:堆与堆排序 堆 定义:堆是一颗完全二叉树,且满足子结点不大于父节点或不小于父节点,即小根堆和大根堆。堆的每一棵子树也都是一个堆。 下图为一个大根堆。 基本操作:最基本的操作包括插入(insert),向上调整(up),删除(delete),向下调整(down),查询(quary)。 插入insert:
阅读全文