单调队列
单调队列
VL——MOESR
ga
展开
-
【Luogu_P2254 [NOI2005] 瑰丽华尔兹【动态规划】【单调队列】
动态规划+单调队列原创 2022-07-15 20:04:01 · 100 阅读 · 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 · 101 阅读 · 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 · 488 阅读 · 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 · 476 阅读 · 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 · 388 阅读 · 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] 然后滚动数组滚掉i codecodecode #include<iostream> #include<cstdio>..原创 2021-12-24 18:56:13 · 346 阅读 · 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 · 57 阅读 · 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 · 139 阅读 · 1 评论 -
【HDU3530】Subsequence
Problem Description There 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 · 122 阅读 · 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 · 88 阅读 · 0 评论 -
【Luogu_P1725】琪露诺
更好的题目阅读 题目描述 在幻想乡,琪露诺是以笨蛋闻名的冰之妖精。 某一天,琪露诺又在玩速冻青蛙,就是用冰把青蛙瞬间冻起来。但是这只青蛙比以往的要聪明许多,在琪露诺来之前就已经跑到了河的对岸。于是琪露诺决定到河岸去追青蛙。 小河可以看作一列格子依次编号为0到N,琪露诺只能从编号小的格子移动到编号大的格子。而且琪露诺按照一种特殊的方式进行移动,当她在格子i时,她只移动到区间[i+l,i+r]中的任意一格。你问为什么她这么移动,这还不简单,因为她是笨蛋啊。 每一个格子都有一个冰冻指数A[i],编号为0的格原创 2020-08-11 07:47:18 · 112 阅读 · 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 · 346 阅读 · 0 评论 -
【SSL2884】假期
Description 经过几个月辛勤的工作,FJ决定让奶牛放假。假期可以在1…N天内任意选择一段(需要连续),每一天都有一个享受指数W。但是奶牛的要求非常苛刻,假期不能短于P天,否则奶牛不能得到足够的休息;假期也不能超过Q天,否则奶牛会玩的腻烦。FJ想知道奶牛们能获得的最大享受指数。 Input 第一行:N,P,Q. 第二行:N个数字,中间用一个空格隔开,每个数都在longint范围内。 Output 一个整数,奶牛们能获得的最大享受指数。 Sample Input 5 2 4原创 2020-08-10 15:41:52 · 137 阅读 · 0 评论 -
【SSL2883】烽火传递
Description 烽火台又称烽燧,是重要的军事防御设施,一般建在险要或交通要道上。一旦有敌情发生,白天燃烧柴草,通过浓烟表达信息;夜晚燃烧干柴,以火光传递军情,在某两座城市之间有 n 个烽火台,每个烽火台发出信号都有一定代价。为了使情报准确地传递,在连续 m 个烽火台中至少要有一个发出信号。请计算总共最少花费多少代价,才能使敌军来袭之时,情报能在这两座城市之间准确传递。 Input 第一行:两个整数 N,M。其中N表示烽火台的个数, M 表示在连续 m 个烽火台中至少要有一个发出信号。接下来 N原创 2020-08-10 11:50:52 · 162 阅读 · 0 评论 -
【POJ_2823】Sliding WIndow ——【Luogu_1886】滑动窗口
Description An 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 · 127 阅读 · 0 评论