![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
优先队列(堆)
优先队列
ModestCoder_
一个modest的coder
展开
-
【题解】LuoGu2048:[NOI2010]超级钢琴
原题传送门 这道题目的id昭示着它的非同凡响 我可以把这题和别的几题结合起来,产生一种利用堆的节点最优思想 序列合并 最小函数值 以上是两道和这题有共同思想的 本题是要求出前kkk大的sumj−sumi−1sum_j-sum_{i-1}sumj−sumi−1的和 对于每个节点iii,首先寻出[i+l−1,i+r−1][i+l-1,i+r-1][i+l−1,i+r−1]区间内的pospospos,使得sumpos−sumi−1>=sumj−sumi−1(i+l−1<=j<=i+r−1)s原创 2020-08-30 18:58:21 · 173 阅读 · 0 评论 -
【题解】LuoGu2278:[HNOI2003]操作系统
原题传送门 用堆模拟操作系统即可 Code: #include <bits/stdc++.h> #define maxn 1000010 using namespace std; struct heap{ int id, st, t, level; bool operator < (const heap &x) const { return x.level == level ? x.st < st : x.level > level; } }; priority_q原创 2020-08-21 15:27:41 · 177 阅读 · 0 评论 -
【题解】LuoGu2085:最小函数值
原题传送门 做法跟这道题目差不多 Code: #include <bits/stdc++.h> #define maxn 10010 using namespace std; struct heap{ int x, val; bool operator < (const heap &x) const{ return x.val < val; } }; priority_queue <heap> q; int n, m, a[maxn], b[maxn], c[原创 2020-08-18 16:10:55 · 185 阅读 · 0 评论 -
【题解】LuoGu1631:序列合并
原题传送门 a1+b1<=a1+b2<=...<=a1+bna_1+b_1<=a_1+b_2<=...<=a_1+b_na1+b1<=a1+b2<=...<=a1+bn a2+b1<=a2+b2<=...<=a2+bna_2+b_1<=a_2+b_2<=...<=a_2+b_na2+b1<=a2+b2<=...<=a2+bn … an+b1<=an+b2<=...原创 2020-08-18 16:00:11 · 158 阅读 · 0 评论 -
【题解】LuoGu3620: [APIO/CTSC 2007]数据备份
原题传送门 首先转化题意,可以用贪心策略证明肯定是相邻的两个点建立电缆 然后把问题转化成ai=si+1−sia_i=s_{i+1}-s_iai=si+1−si,a1,a2,...,an−1a_1,a_2,...,a_{n-1}a1,a2,...,an−1中取kkk个不相邻的数使得和最小 首先非常明显的O(nk)naiveDPO(nk)\text{naiveDP}O(nk)naiveDP...原创 2019-12-17 19:39:58 · 726 阅读 · 0 评论 -
【题解】codeforces725D Contest Balloons
One tradition of ACM-ICPC contests is that a team gets a balloon for every solved problem. We assume that the submission time doesn’t matter and teams are sorted only by the number of balloons they ha...原创 2018-08-05 09:36:27 · 348 阅读 · 0 评论 -
【题解】LuoGu5290:[十二省联考2019]春节十二响
原题传送门 诶呀,这种题目比ZJOI可做多了 首先,可以发现此题要我们干的事情:一些互不相干的点,怎么组合,使得代价最小? 一般题目的子任务都是与正解有关的,此题亦是如此。 先考虑一条链的情况,因为题目指定1为根节点,但1可能有两个子节点,1下面的两条链怎么组合使得代价最小呢?对于一条链代价最大的那个点,肯定与另一条链代价最大的那个点组合;第二大的和第二大的组合……毫无疑问吧,所以对于一条链的情况...原创 2019-04-14 10:12:34 · 235 阅读 · 0 评论 -
【题解】LuoGu4597:序列sequence
原题传送门 先放这道题的cf原题 若N<=5000 显然用O(n2)O(n^2)O(n2)的DP解决 首先明确:改变序列中某个数个值,一定是把它变成原序列中出现过的数 原数组a复制一份到b,排个序 令dp[i][j]表示到a[i]为止,以b[j]结尾的最小代价 转移方程:dp[i][j]=min(dp[i][j−1],dp[i−1][j]+abs(a[i]−b[j]))dp[i][j]=mi...原创 2019-07-06 16:17:58 · 652 阅读 · 0 评论