BZOJ 1345 序列问题 单调栈】的更多相关文章

题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=1345 题目大意: 对于一个给定的序列a1,…,an,我们对它进行一个操作reduce(i),该操作将数列中的元素ai和ai+1用一个元素max(ai,ai+1)替代,这样得到一个比原来序列短的新序列.这一操作的代价是max(ai,ai+1).进行n-1次该操作后,可以得到一个长度为1的序列.我们的任务是计算代价最小的reduce操作步骤,将给定的序列变成长度为1的序列. 思路: 由贪…
题目链接  BZOJ4540 考虑莫队算法. 这题难在$[l, r]$到$[l, r+1]$的转移. 根据莫队算法的原理,这个时候答案应该加上 $cal(l, r+1) + cal(l+1, r+1) + cal(l+2, r+1) + ... + cal(r+1, r+1)$ $cal(l, r)$表示$a[l], a[l+1], a[l+2], ..., a[r]$中的最小值. 我们先求出$[l, r +1]$ 这些数中的最小值$a[x]$ 那么$cal(l, r+1) + cal(l+1,…
强烈安利:http://blog.csdn.net/qq_34637390/article/details/51313126 这篇讲标记讲的非常好,这个标记非常神奇-- 首先last表示扫描到last这个点了,val[x]表示x到last中的最小值,sum[x]表示last分别等于1,2,3....last时的和(也就是所有val历史版本的和) 然后答案就是当前last扫到r,l到r之间所有sum的和(稍微画一下就理解了 然后考虑现在要挪动last,新的last的影响范围是他之前第一个比他小的位…
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4709 题解:https://blog.csdn.net/neither_nor/article/details/53285115 每次选的段的两端种类相同.因为贡献有个数的二次方,所以对于 i ,更小的 j 的 [ j+1 , i ] 之间部分的贡献增长得更快.所以随着个数的增加,较小的 j 会越来越优于较大的 j ,就有决策单调性. 但是用指针的话,可能有下一个位置不优于这个位置,但下下…
P2659 美丽的序列 题目链接 https://www.luogu.org/problemnew/show/P2659 题目描述 为了研究这个序列的美丽程度,GD定义了一个序列的"美丽度"和"美丽系数":对于这个序列的任意一个区间[l,r],这个区间的"美丽度"就是这个区间的长度与这个区间的最小值的乘积,而整个序列的"美丽系数"就是它的所有区间的"美丽度"的最大值.现在GD想要你帮忙计算这个序列的&quo…
通过打表证明发现答案就是把序列划分成若干段,每段的b都是这一段a的平均数.50分做法比较显然,就是单调栈维护,每次将新元素当成一个区间插入末尾,若b值不满足单调不降,则将这个区间与单调栈前一个区间合并. 由于题目要求每次只修改一个数,所以可以前后缀拼起来,单调栈要改变,然后发现这个显然满足二分的性质,二分完位置左端点后再二分右端点,写一个可持久化单调栈维护一下就可以了. 还有一种主席树做法,后序可能会补上. #include<bits/stdc++.h> using namespace std…
题面传送门 这道题为什么我就没想出来呢/kk 对于每组询问 \([l,r]\),我们首先求出区间 \([l,r]\) 中最小值的位置 \(x\),这个可以用 ST 表实现 \(\mathcal O(n\log n)-\mathcal O(1)\) 维护,那么显然 \(\forall l'\in[l,x],r'\in[x,r],\min\limits_{t\in[l',r']}a_t=a_x\),产生的贡献为 \((r-x+1)(x-l+1)a_x\),于是我们只用计算 \([x+1,r],[l,…
https://www.lydsy.com/JudgeOnline/problem.php?id=4826 年少不知空间贵,相顾mle空流泪. 和上一道主席树求的东西差不多,求两种对 1. max(a[(i,j)])<min(a[i],a[j]),[i,j]这一对贡献p1. 2. max(a[(i,j)])在a[i],a[j]之间,[i,j]这一对贡献p2. 第一种和bzoj3956那道一样,但是因为是排列所以没必要去重了. 第二种同样是单调栈求lp,rp,每个位置的lp分别和[ i+1 , r…
3039: 玉蟾宫 Time Limit: 2 Sec  Memory Limit: 128 MB[Submit][Status][Discuss] Description 有一天,小猫rainbow和freda来到了湘西张家界的天门山玉蟾宫,玉蟾宫宫主蓝兔盛情地款待了它们,并赐予它们一片土地.这片土地被分成N*M个格子,每个格子里写着'R'或者'F',R代表这块土地被赐予了rainbow,F代表这块土地被赐予了freda.现在freda要在这里卖萌...它要找一块矩形土地,要求这片土地都标着'…
传送门 单调栈大水题 l[i] 表示 i 能扩展到的左边 r[i] 表示 i 能扩展到的右边 ——代码 #include <cstdio> #include <iostream> #define LL long long ; int n, t; LL ans, a[MAXN], s[MAXN], l[MAXN], r[MAXN]; inline int read() { , f = ; char ch = getchar(); ; ) + (x << ) + ch -…