
队列、双端队列、优先队列、堆
文章平均质量分 89
队列
ez_lcw
这个作者很懒,什么都没留下…
展开
-
【HNOI/AHOI2018】排列(树上一类全序问题)
这个条件给的有点诡异:对于任意的 apj=pka_{p_j}=p_kapj=pk,都有 k<jk<jk<j。那么对于某个 ax=ya_x=yax=y,意思就是 yyy 在 ppp 中的位置小于 xxx 在 ppp 中的位置。那么如果我们连边 (ax,x)(a_x,x)(ax,x),就是要求图中没有环,是一棵树,而且父亲在 ppp 中的位置要小于儿子在 ppp 中的位置。再看一下要求:按 ppp 的顺序把 i×wpii\times w_{p_i}i×wpi 加起来得到总权原创 2021-09-10 20:24:15 · 154 阅读 · 0 评论 -
【HDU6326】Monster Hunter(树上一类全序问题)
先考虑没有树的限制,即我们可以任意安排顺序打怪兽,那么这就是一个全序问题。考虑在某种顺序下,假设初始血量为 ststst,那么打到第 iii 个怪物时剩余的血量就是 st+∑j=1i−1(bj−aj)st+\sum\limits_{j=1}^{i-1}(b_j-a_j)st+j=1∑i−1(bj−aj),如果设 sumi=∑j=1i−1(bj−aj)sum_i=\sum\limits_{j=1}^{i-1}(b_j-a_j)sumi=j=1∑i−1(bj−aj),那么我们就需要保证 ∀i,s原创 2021-09-09 16:37:10 · 341 阅读 · 0 评论 -
【AGC023F】01 on Tree(树上一类全序问题)
显然如果没有树的限制,我们优先选 000,然后选 111。如果有了树的限制,我们考虑下面这么一种贪心方法:假设当前能够选的点的集合为 SSS(初始时 SSS 只包含根),然后选出 SSS 中优先级最大的点 uuu(000 的优先级大于 111 的优先级)放在序列末尾,然后把 uuu 从 SSS 中删除,并且把 uuu 的儿子都塞进 SSS 里面,再重复上述过程直至 SSS 为空为止。这个贪心方法看起来很对,但可能会出现下面这种情况:如图,我们选完根节点 111 后,SSS 中包含的是节点 222 和原创 2021-09-09 15:33:48 · 482 阅读 · 0 评论 -
【XSY3888】传送门(最短路树,可并堆,dp)
题面题解假设 SSS 到 TTT 路径上一条边 (u,v)(u,v)(u,v) 被删掉之后最短路会如何变化。建出以 TTT 为根的最短路树,如果 (u,v)(u,v)(u,v) 不在树上,那么我们直接从 uuu 沿着最短路树走到 TTT 即可。否则,如果 (u,v)(u,v)(u,v) 在最短路树上,那么 vvv 一定是 uuu 的父亲。那么我们需要从 uuu 走到 uuu 子树内的任意一个点 xxx,然后再从 xxx 经过一条非树边跳到一个在 uuu 子树外的点 yyy,然后再沿最短路树走到 T原创 2021-02-07 12:24:17 · 307 阅读 · 0 评论 -
【CSP2020】贪吃蛇(博弈,结论,双端队列)
Subtask 1:55pts55pts55ptsn≤2000n\leq 2000n≤2000。这就变成了一道模拟题了呀。对于每一轮,先假设最大的吃了最小的,然后往下递归每一轮,并设置数组 alivealivealive,维护这之后会有哪些蛇活着。在回溯的时候,如果最大蛇的发现它自己被吃了,就撤销吃这个动作,并重新更新 alivealivealive 数组。可以用 set维护,时间复杂度 O(n2)O(n^2)O(n2)。#include<bits/stdc++.h>#define原创 2020-11-17 13:54:07 · 590 阅读 · 0 评论 -
【BZOJ4504】K个串(优先队列,可持久化线段树)
Description兔子们在玩k个串的游戏。首先,它们拿出了一个长度为n的数字序列,选出其中的一个连续子串,然后统计其子串中所有数字之和(注意这里重复出现的数字只被统计一次)。兔子们想知道,在这个数字序列所有连续的子串中,按照以上方式统计其所有数字之和,第k大的和是多少。Input第一行,两个整数n和k,分别表示长度为n的数字序列和想要统计的第k大的和接下里一行n个数a_i,表示这个数字序列Output一行一个整数,表示第k大的和设 f(i,j)f(i,j)f(i,j) 表示以 iii.原创 2020-07-29 20:09:37 · 391 阅读 · 0 评论 -
【loj6035】【雅礼集训 2017 Day4】洗衣服(贪心,优先队列)
我们先用优先队列的方式分别处理出只让所有衣服洗完的时间和只让所有衣服烘干的时间。然后我们考虑怎么分配衣服。最优情况肯定是让最慢洗完的衣服放进最快烘干的烘干机里面。直接维护即可。代码如下:#include<bits/stdc++.h> #define L 1000010#define N 100010#define ll long long using namesp...原创 2019-11-02 21:32:29 · 230 阅读 · 0 评论 -
【XSY2541】炮艇大赛之正式赛(堆)
题面Description炮艇大赛是一项危险的比赛。为了赢得这场比赛,参赛者可能会牺牲自己的生命。参赛者将会在一条长度为 LLL 的环形轨道上比赛。在比赛开始时(000时刻),所有参赛者站在轨道不同的位置上,其中第 iii 名参赛者站在位置 di(0≤di<L)di(0≤di<L)di(0≤di<L) 上。然后比赛开始。每位参赛者驾驶着它的炮艇,速度为 vi...原创 2019-08-14 21:43:14 · 170 阅读 · 0 评论