单调队列
Neo__Z
这个作者很懒,什么都没留下…
展开
-
NOIP2016 T5 蚯蚓
解题报告如果光用优先队列会超时。 可以发现如果先排序,那每条蚯蚓按比例切开后的[px]和x-[px]仍分别单调递减,所以可以开3个队列分别放原始长度,[px]部分和x-[px]部分,每次取三个队首中最长的即可。#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<algorithm>#inc原创 2017-07-28 15:09:35 · 400 阅读 · 0 评论 -
NOIP模拟 最佳序列【二分答案+线段树(单调队列)】
题目大意:给出一个长度为n的序列,求所有长度在[L,R]中的子段的平均值的最大值。(1<=n<=100000)。解题思路:考试时发现平均值根本没有规律可言,所以想到了二分答案,就变为了判定性问题。设二分答案为x,然后将所有数减去x,那如果有一个合法区间和大等于0,则说明该平均值较小,反之则较大。那如何判定呢?对于一个左端点i,则合法区间右端点j在[i+L-1,i+R-1]之间,该区间和为sum[j]原创 2017-11-02 19:10:26 · 580 阅读 · 0 评论 -
bzoj1855 SCOI2010 股票交易【单调队列优化dp】
解题思路:很容易想到dp[now][i]" role="presentation">dp[now][i]dp[now][i]dp[now][i]表示第now天拥有i张股票赚的最多的钱,那么转移方程为: 1.不交易: dp[now][i]=dp[now−1][i]" role="presentation">dp[now][i]=dp[now−1][i]dp[now][i]=dp原创 2017-10-25 19:40:16 · 449 阅读 · 0 评论 -
hdu2191 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活【单调队列优化多重背包】
解题思路:题目就是求裸的多重背包。 朴素的多重背包是O(n3)" role="presentation">O(n3)O(n3)O(n^3),但用单调队列可以优化到O(n2)" role="presentation">O(n2)O(n2)O(n^2). dp方程为: f[j+k∗w[i]]=max(f[j+l∗w[i]]+(k−l)∗原创 2018-02-06 21:04:46 · 315 阅读 · 0 评论 -
bzoj4182: Shopping【点分治+单调队列优化多重背包】
题目大意:给定一棵有 n 个点的树,第 i 个点有 di 件商品,价格为 ci,价值为 wi。 你手头有 m 块钱,且你要保证你买过的点在树上互相连通,问买到的物品的总价值最多是多少。 1 ≤ n ≤ 500, 1 ≤ m ≤ 4000, di ≤ 100。 解题思路:如果直接树形dp是O(nm2d)O(nm2d)O(nm^2d)的,显然过不了考虑如果强制要选一个点怎么做。 ...原创 2018-05-17 21:35:18 · 503 阅读 · 0 评论