单调队列
单调队列
VL——MOESR
ga
展开
-
【Luogu_P2254 [NOI2005] 瑰丽华尔兹【动态规划】【单调队列】
动态规划+单调队列原创 2022-07-15 20:04:01 · 88 阅读 · 0 评论 -
【51nod_1275】连续子段的差异
题目描述思路:枚举左端点,每次右端点扩到不能再大,然后统计。优化就是每做完一次的队列保存到下次继续做codecodecode#include<iostream>#include<cstdio>using namespace std;long long n, k, hd, tl, hd1, tl1;long long a[101010], ans;long long q[101010], q1[101010];int main(){ scanf("原创 2022-01-16 18:57:22 · 96 阅读 · 0 评论 -
【SSL_2884】假期
思路:用单调队列,至于假期长度的处理只需要在到i时将i-p插入到队列就行了codecodecode#include<iostream>#include<cstdio>using namespace std;long long n, p, q, b[101010], ans=-1e18;long long a[1010101], q1[101010];int main(){ scanf("%lld%lld%lld", &n, &p, &a..原创 2022-01-15 10:12:45 · 479 阅读 · 0 评论 -
【SSL_2883】烽火传递
思路:很容易退出DP方程:fi=min(fj)+aif_i=min(f_j)+a_ifi=min(fj)+ai其中i−m≤j<ii-m≤j<ii−m≤j<i然后直接用单调队列维护codecodecode#include<iostream>#include<cstdio>using namespace std;int n, m;int a[101010];int q[101010], f[101010];int main(){..原创 2022-01-15 08:50:13 · 463 阅读 · 0 评论 -
【YBTOJ】耗费体力
思路:设fif_ifi表示到第i个人要用的最小花费,然后从前k个转移过来,用单调队列来维护codecodecode#include<iostream>#include<cstdio>using namespace std;int n, t;int a[1000100], f[1000100];int q[1000100];int main(){ scanf("%d", &n); for(int i=1; i<=n; i++) s..原创 2021-12-24 19:14:17 · 377 阅读 · 0 评论 -
【YBTOJ】粉刷木板
思路:设f[i][j]表示到第i个人,涂前j个所以f[i][j]=max(f[i−1][k]+(j−k)∗p[i])f[i][j]=max(f[i-1][k]+(j-k)*p[i])f[i][j]=max(f[i−1][k]+(j−k)∗p[i])用单调队列滚掉f[i−1][k]−k∗p[i]f[i-1][k]-k*p[i]f[i−1][k]−k∗p[i]然后滚动数组滚掉icodecodecode#include<iostream>#include<cstdio>..原创 2021-12-24 18:56:13 · 342 阅读 · 0 评论 -
2021.08.24【NOIP提高A、B组】模拟 Window
思路:单调队列板题codecodecode#include<iostream>#include<cstdio>using namespace std;int n, k;int a[1010000], q[1010000], tail, head;int main(){ scanf("%d%d", &n, &k); for(int i=1; i<=n; i++) scanf("%d", &a[i]); head=1,..原创 2021-08-24 16:37:34 · 46 阅读 · 0 评论 -
【HDU3401】Trade——【Luogu_P2569】股票交易(有改动)
题目描述最近 WW 又迷上了投资股票,通过一段时间的观察和学习,他总结出了股票行情的一些规律。通过一段时间的观察,\text{lxhgww}lxhgww 预测到了未来 TT 天内某只股票的走势,第 ii 天的股票买入价为每股 AP_i,第 ii 天的股票卖出价为每股 BP_i ,但是每天不能无限制地交易,于是股票交易所规定第 i 天的一次买入至多只能购买 AS_i 股,一次卖出至多只能卖出 BS i股。另外,股票交易所还制定了两个规定。为了避免大家疯狂交易,股票交易所规定在两次交易(某一天的买入或原创 2020-08-11 18:45:20 · 132 阅读 · 1 评论 -
【HDU3530】Subsequence
Problem DescriptionThere is a sequence of integers. Your task is to find the longest subsequence that satisfies the following condition: the difference between the maximum element and the minimum element of the subsequence is no smaller than m and no larg原创 2020-08-11 11:01:44 · 115 阅读 · 0 评论 -
【SSL2521】数数
思路:我们可以先求前缀和,然后用单调队列维护序列的起点递增,最后用当前这个点的值-最小起点的值就可以求出这一段的总长代码:#include<iostream>#include<cstdio>#include<cstring>using namespace std;long long m, n, k, head, tail, q[1001000], a[1001000];//longlong要开int main(){ scanf("%lld%lld..原创 2020-08-11 08:14:59 · 78 阅读 · 0 评论 -
【Luogu_P1725】琪露诺
更好的题目阅读题目描述在幻想乡,琪露诺是以笨蛋闻名的冰之妖精。某一天,琪露诺又在玩速冻青蛙,就是用冰把青蛙瞬间冻起来。但是这只青蛙比以往的要聪明许多,在琪露诺来之前就已经跑到了河的对岸。于是琪露诺决定到河岸去追青蛙。小河可以看作一列格子依次编号为0到N,琪露诺只能从编号小的格子移动到编号大的格子。而且琪露诺按照一种特殊的方式进行移动,当她在格子i时,她只移动到区间[i+l,i+r]中的任意一格。你问为什么她这么移动,这还不简单,因为她是笨蛋啊。每一个格子都有一个冰冻指数A[i],编号为0的格原创 2020-08-11 07:47:18 · 101 阅读 · 0 评论 -
【HDU2191】多重背包
Input输入数据首先包含一个正整数C,表示有C组测试用例,每组测试用例的第一行是两个整数n和m(1<=n<=100, 1<=m<=100),分别表示经费的金额和大米的种类,然后是m行数据,每行包含3个数p,h和c(1<=p<=20,1<=h<=200,1<=c<=20),分别表示每袋的价格、每袋的重量以及对应种类大米的袋数。Output对于每组测试数据,请输出能够购买大米的最多重量,你可以假设经费买不光所有的大米,并且经费你可以不用完。每原创 2020-08-10 21:05:36 · 336 阅读 · 0 评论 -
【SSL2884】假期
Description经过几个月辛勤的工作,FJ决定让奶牛放假。假期可以在1…N天内任意选择一段(需要连续),每一天都有一个享受指数W。但是奶牛的要求非常苛刻,假期不能短于P天,否则奶牛不能得到足够的休息;假期也不能超过Q天,否则奶牛会玩的腻烦。FJ想知道奶牛们能获得的最大享受指数。 Input第一行:N,P,Q. 第二行:N个数字,中间用一个空格隔开,每个数都在longint范围内。Output一个整数,奶牛们能获得的最大享受指数。Sample Input5 2 4原创 2020-08-10 15:41:52 · 131 阅读 · 0 评论 -
【SSL2883】烽火传递
Description 烽火台又称烽燧,是重要的军事防御设施,一般建在险要或交通要道上。一旦有敌情发生,白天燃烧柴草,通过浓烟表达信息;夜晚燃烧干柴,以火光传递军情,在某两座城市之间有 n 个烽火台,每个烽火台发出信号都有一定代价。为了使情报准确地传递,在连续 m 个烽火台中至少要有一个发出信号。请计算总共最少花费多少代价,才能使敌军来袭之时,情报能在这两座城市之间准确传递。 Input第一行:两个整数 N,M。其中N表示烽火台的个数, M 表示在连续 m 个烽火台中至少要有一个发出信号。接下来 N原创 2020-08-10 11:50:52 · 147 阅读 · 0 评论 -
【POJ_2823】Sliding WIndow ——【Luogu_1886】滑动窗口
DescriptionAn array of size n ≤ 106 is given to you. There is a sliding window of size k which is moving from the very left of the array to the very right. You can only see the k numbers in the window. Each time the sliding window moves rightwards by one原创 2020-08-10 10:59:39 · 118 阅读 · 0 评论