随笔分类 -  技巧——差分&前缀和

摘要:Description 【LuoguP1630】求和 给定$a,b$,求$(\sum\limits_{i=1}^{a}{i^b})\mod 10000$ 多组询问,$a,b\le 1e9$ Solution 前缀和+快速幂 如果暴力计算答案,那么时间复杂度为$O(Tab)$ 使用快速幂优化,那么时间 阅读全文
posted @ 2019-09-23 19:44 AD_shl 阅读(267) 评论(0) 推荐(0)
摘要:Description 【CF1197D】Yet Another Subarray Problem 给定一个序列和m,k,求出一个子序列使得$\sum\limits_{i=l}^{r}{a_i}-k\times \lceil \frac{r-l+1}{m}\rceil$最大 特别地,一个长度为0的子 阅读全文
posted @ 2019-08-23 15:48 AD_shl 阅读(289) 评论(0) 推荐(0)
摘要:一道关于单调队列的模板题。 题目要求求一段区间,使得这一段区间的和最大且区间长度不超过m。我们显然想到了先求出这个序列的前缀和sum,这样我们就能用O(1)的时间查询任意一个子序列的和。 现在,我们枚举区间的右端点,对于每一个右端点i,我们要找到一个左端点j,使得sum[j]最小而且i-j≤m. 因 阅读全文
posted @ 2019-05-18 09:42 AD_shl 阅读(219) 评论(0) 推荐(0)
摘要:这是一道树链剖分/树上差分/LCA的题目…… 本来想打一遍树剖,但是被那强大的码量劝退了,于是我开始思考树上差分。 我们先把每个点深度的k次方打一个表,之后我们因为要做减法,所以我们令vali,k​表示i到1号点路径上点深度的k次方之和 然后问题来了,我们维护的是点权和,所以我们发现直接减的话会导致 阅读全文
posted @ 2019-05-03 15:40 AD_shl 阅读(150) 评论(0) 推荐(0)
摘要:关于lca和树上差分的题目。 根据题目描述,主要边是一棵树,附加边会和主要边构成一个环,如果我们第一步切断了一条主要边,我们下一步就必须切断一条附加边才能符合题意。 所以,我们可以认为一条附加边(x,y)把树上x,y之间的路径覆盖了一遍,我们需要统计每条主要边被覆盖多少次即可。具体地,如果第一步我们 阅读全文
posted @ 2019-05-01 19:34 AD_shl 阅读(128) 评论(0) 推荐(0)
摘要:本题当然可以用树剖解决,而且是树剖的模板题。但是对于本题来说,有一种更巧妙的办法 树上差分 类似于普通的差分,我们对于题目中的每一条路线i->j,把它拆成i->lca(i,j)->j.然后将i点、j点的权值加一,将lca(i,j)的权值减二 乍看起来没什么毛病,但是仔细想想,对lca(i,j)的子树 阅读全文
posted @ 2019-03-16 19:48 AD_shl 阅读(273) 评论(0) 推荐(0)
摘要:这是一道经典的差分题。 思路大概是这样的: 对于输入的序列a(假定长度为n) 我们求出他的差分序列sum 那么题目就转化成了用最少的步数使得差分序列sum的2~n项都为0 那么就有以下的几种决策: 显然,在sumi和sumj一正一负的前提下,我们应该尽可能多的使用第一种,这样才能使答案最优。 统计s 阅读全文
posted @ 2019-03-16 13:06 AD_shl 阅读(270) 评论(0) 推荐(0)