luogu 2827 蚯蚓 单调队列/优先队列】的更多相关文章

易知可利用优先队列选取最大值: 但是通过分析可知,先取出的蚯蚓分开后仍然要比后分的长,所以可直接利用单调队列找队头即可,分三个单调队列,分别找未切割,切割,切割2三种情况 #include<bits/stdc++.h> #define rep(i,x,y) for(register int i=x;i<=y;i++) #define ll long long using namespace std; ; ; ; int n,m,q,u,v,t,add; ][M],head[],tail[…
题目链接:https://vijos.org/p/2007 题目链接:https://www.luogu.org/problem/show?pid=2827#sub 说实话当两个网站给出AC后,我很感动....这题啊,思路容易想到,就是小细节太烦了..... [思路] 这道题要开三个队列,而且需要证明到一个点才能够做.. 就是先切的蚯蚓的部分,比后切的蚯蚓的对应部分长...有可能你会想蚯蚓不是随时在长吗,当然这不影响..我们来简单证明一下 ----------------------------…
题意 初始时有$n$个蚯蚓,每个长度为$a[i]$ 有$m$个时间,每个时间点找出长度最大的蚯蚓,把它切成两段,分别为$a[i] * p$和$a[i] - a[i] * p$,除这两段外其他的长度都加一个定值$q$. 每次询问被蚯蚓被切前的长度 Sol 用堆模拟可获得$50 - 85$不等的分数. 蚯蚓的长度有单调性.然后这题就做完了... 首先把$a[i]$排序 我们分别维护三个数组$a, b, c$,分别表示未被切的蚯蚓,被切成$p * a[i]$的蚯蚓和被切成$a[i] - p * a[i…
注意转移方程 分1.凭空买 2.不买不卖 3.在原来基础上买 4.在原来基础上卖 四种情况 head=1,tail=0;再判断一下head<=tail也可以 #include<bits/stdc++.h> using namespace std; ; int n,m,w,ans; int ap[N],bp[N],as[N],bs[N]; int f[N][N]; ],head=,tail=; int main() { scanf("%d%d%d",&n,&am…
Description 本题中,我们将用符号[c]表示对c向下取整,例如:[3.0」= [3.1」=[3.9」=3.蛐蛐国最近蚯蚓成灾了!隔壁跳 蚤国的跳蚤也拿蚯蚓们没办法,蛐蛐国王只好去请神刀手来帮他们消灭蚯蚓.蛐蛐国里现在共有n只蚯蚓(n为正整 数).每只蚯蚓拥有长度,我们设第i只蚯蚓的长度为a_i(i=1,2,...,n),并保证所有的长度都是非负整数(即:可 能存在长度为0的蚯蚓).每一秒,神刀手会在所有的蚯蚓中,准确地找到最长的那一只(如有多个则任选一个) 将其切成两半.神刀手切开蚯蚓…
http://poj.org/problem?id=3253 经典题目了,大意是说如果要切断一个长度为a的木条需要花费代价a, 问要切出要求的n个木条所需的最小代价. 无论是以下哪种方法,最原始的思路就是从相反的角度思考,将每两个合并,花费的代价是他们两个的和,一直到最后只剩下一个 方法一: 使用STL的priority_queue,先将所有的木条放入到队列中.每次取出两个木条将他们的长度相加,加入到花费当中去,然后放回到队列中. 这样计算的时间复杂度就是O(NlogN). 方法二: 使用单调队…
构建三个单调队列(用STL),分别储存未切的蚯蚓,切后的第一段,切后的第二段,即可简单证明其单调性. 证明:设$q$为单调队列$\because a_1 \geqslant a_2 \geqslant a_3 \geqslant \dots \geqslant a_n$$\therefore a_2\leqslant a_1 ,p\cdot a_1 \leqslant a_1,(a_1-p\cdot a_1)\leqslant a_1$$又 \because a_x 取自,a_2,(p\cdot…
Luogu 1020 导弹拦截(动态规划,最长不下降子序列,二分,STL运用,贪心,单调队列) Description 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度.某天,雷达捕捉到敌国的导弹来袭.由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹. 输入导弹依次飞来的高度(雷达给出的高度数据是不大于30000的正整数),计算这套系统最多能拦截多少导弹,如果要…
本文是笔者第二篇解题报告.从现在开始,会将练的一些题发到博客上并归类到"解题报告"标签中. 琪露诺是这样一道题 这道题可以用纯DP做,但是据说会超时.(为什么?看起来过河这题比它数据大多了)于是到Luogu题解上找到了单调队列优化. 首先讲一下纯DP思路 假设我们的⑨正在河中央,编号为i的格子上. 观察琪露诺的移动规律可得,琪露诺再往下走只能走到编号为i + l 到 i + r 之间的格子上. 于是想到,琪露诺之所以现在能在这里,一定是上一步从编号为 i - r 到 i - l 的格子…
题目链接: (bzoj) https://www.lydsy.com/JudgeOnline/problem.php?id=2806 (luogu) https://www.luogu.org/problemnew/show/P4022 题解:对"作文库"中的串建广义SAM.(感觉加个#拼在一起直接SAM也行啊,只是常数大了点,但是大家都写的广义SAM我也就跟着写广义SAM了233333) 询问时二分\(L\), 变成求最少几个位置不匹配.然后DP方程是\(dp[i]=\min(dp[…