堆/可并堆
。
C202044zxy
这个作者很懒,什么都没留下…
展开
-
[BZOJ 2171]K凹凸序列
一、题目 题目描述 一个序列的第1,3,5…项被称作奇数项,第2,4,6…项被称作偶数项。一个序列A[1…n]被称作ZigZag序列当且仅当以下两个条件中的一个(或两个)成立: 1)除了首项,所有的奇数项都比它的前项小且所有的偶数项都比它的前项大。 2)除了首项,所有的奇数项都比它的前项大且所有的偶数项都比它的前项小。一个序列A[1…n]被称作K凹凸序列当且仅当它的最长ZigZag子序列(不一定是...原创 2020-04-05 20:49:05 · 244 阅读 · 0 评论 -
[SDOI2010]魔法猪学院
一、题目 点此看题 二、解法 直接讲人话把,网上的什么性质和结论看得我想吐。 首先建出以ttt为根的最短路树,在反图上跑最短路然后建树,多条满足条件的边任选即可。 我们考虑用非树边替换树边,定义一条边(u,v)(u,v)(u,v)的权值是 c−dis[u]+dis[v]c-dis[u]+dis[v]c−dis[u]+dis[v] (disdisdis为树上的到根的距离,ccc是壁边权),实际意义就...原创 2020-04-05 10:55:40 · 175 阅读 · 0 评论 -
[SCOI2011]棘手的操作
一、题目 点此看题 二、解法 维护一个左偏树和一个并查集,这道题的关键是使用惰性删除法,然而我讲不清楚,直接看代码吧(详细注释)。 #include <cstdio> #include <iostream> #include <queue> using namespace std; const int M = 300005; int read() { int ...原创 2020-04-04 11:04:21 · 143 阅读 · 0 评论 -
[CQOI2016]伪光滑数
一、题目 点此看题 二、解法 首先处理出128128128以内的质数,kkk的范围比较小,可以一个一个找。 我们维护一个四元组(val,mn,lst,sec)(val,mn,lst,sec)(val,mn,lst,sec),分别表示当前数的值,最小的质因子,最小的质因子次数,次小的质因子次数。一开始我们把每个质数结尾的最大数放进堆中,容易发现此时质因数都相同,我们需要保证结尾的质因数一定是当前钦定...原创 2020-04-03 11:05:04 · 207 阅读 · 0 评论 -
[JLOI2015]城池攻占
一、题目 点此看题 二、解法 先把每个人放到对应的点上,可以用左偏树,然后从下往上合并,每次就删除当前节点会牺牲的人,然后维护一个 加法///乘法 标记,时间复杂度O(nlogn)O(n\log n)O(nlogn) #include <cstdio> #include <iostream> using namespace std; #define int long lo...原创 2020-04-02 16:23:36 · 254 阅读 · 0 评论 -
[BalticOI 2004]Sequence
一、题目 点此看题 二、解法 第一步可以把aia_iai和bib_ibi都减去iii,结果不会变,但是单调递增就变成了单调不减。 考虑∣x−a∣+∣x−b∣|x-a|+|x-b|∣x−a∣+∣x−b∣之类的问题最优解就是取中位数(我们默认选后面那位),我们可以把原序列划分成若干的子序列,每一个子序列的中位数就是局部的最优解,需要满足单调不减。我们用可并堆维护中位数,我们每次加入一个点,当 前一...原创 2020-04-02 10:18:19 · 240 阅读 · 0 评论 -
[APIO2012]派遣
一、题目 点此看题 二、解法 可并堆板题,我们维护一个大根堆,每次把儿子的堆并到父亲上去,然后用父亲的领导力乘上最多选的个数来更新答案,容易发现如果一个堆中的元素和超过了mmm,那么直接删去最大值,当前最大值不会用,以后更不会用,时间复杂度O(nlogn)O(n\log n)O(nlogn)。 #include <cstdio> #include <iostream> u...原创 2020-04-02 08:45:10 · 192 阅读 · 0 评论