前缀和 差分
前缀和 差分
_hunxuewangzi
这个作者很懒,什么都没留下…
展开
-
Codeforces Round #582 (Div. 3) G. Path Queries 题解(差分)
题目链接题目大意让你构造一个长为n的只包含k种小写字母的字符串,使得按照p,q数组排序后,这两个序列保持非严格单调上升题目思路emmm,好神奇啊,居然直接用差分就行了,我差分学的好菜啊qwq。题目实际上是一堆大于等于的约束。观察这2n−2个约束。第一组可以将要求的排成一个不降的序列,然后第二组就是在第一组的基础上再添加条件。不妨设第一组生成的不降序列是{ai},然后添加的条件是ai⩽aj。那么显然,i<j的时候这个条件是没有用的。而如果i>j,就代表着i到j这一整个区间都要相等。这个原创 2020-07-16 16:57:38 · 117 阅读 · 0 评论 -
Codeforces Round #632 (Div. 2) C. Eugene and an array 题解(前缀和+思维)
题目链接题目大意求判定为“good”的子区间个数。good : 在该区间内的所有子区间,不存在和为0的子区间。子序列:对原序列首位依次删除任意个形成的序列题目思路这个题目很巧妙,首先肯定是要用前缀和,如果pre[i]和pre[j]相等,那么[i+1,j]的和为0。这个题目最巧妙的是求区间时,枚举区间的右端点,去计算左端点的个数,我之前一直想的是枚举左端点,我还是太菜qwq代码#include<set>#include<map>#include<stack>原创 2020-07-12 19:13:37 · 183 阅读 · 0 评论 -
洛谷 P4552 [Poetize6] IncDec Sequence (差分)
题目链接题目思路显然在一个区间内做加法和减法要使用差分,然而我没想到。。。肯定是要使得差分数组[2,n]全部为0,而dif[1]有多少个取值,则决定了有多少个可能取值。很明显的,在我们求出的差分数组中,有正数也有负数,要消除这些数,使得它们全部归零,我们有以下3种可行的操作:1:选取一个正数(X)和一个负数(Y),使正数减1,负数加1,这样经过N次操作,我们一定可以以最少的代价将绝对值较小的一方归零,代价为abs(min(X,Y))2:选取一个正数(X),使其与 S[1] 配对或s[n+1],这原创 2020-07-07 15:51:05 · 514 阅读 · 0 评论 -
Codeforces Round #636 (Div. 3) D. Constant Palindrome Sum 题解(思维+差分)
题目链接题目大意给我们一个长度为n的数组a,n为偶数,之后有给了一个k并且给了他的n个元素的值,先在我们需要对这个序列做变化,使a[i]+a[n−i+1]==x,1<=i<=n/2,x为一个常数,问我们最少需要变化多少个数,有一个常数x使上式成立,对于每一个变换我们可以把序列中的任意一个元素a[i]变为1~k之间的任意一个数,求最小需要变化的元素的数量.注意:无论a[i]变化与否它的范围都是在1~k之间题目思路我完全没思路。想不到居然是差分其实就是暴力枚举所有的x,用差分维护一对一原创 2020-06-03 16:21:26 · 187 阅读 · 0 评论 -
牛客小白月赛22 货物种类 题解(差分)
题目链接题目思路前言看到题目没什么思路,以为是线段树,但是明显会t,这题算是第一次用差分做题吧正文每次选择一段区间放入物品,问所有操作完成后物品种类最多的位置是几。区间操作,只有在最后有一次询问所以很显然可以用差分进行求解差分对于每个位置维护一个数组,最后统计更新答案。当然,也可以用某些数据结构来解。代码讲解在区间内实现加减,我们可以使用差分数组。还要注意的一点:不是存放货物数目最多...原创 2020-04-08 11:22:15 · 273 阅读 · 0 评论