
差分
文章平均质量分 82
Frozen_Guardian
已退役菜鸡Acmer
展开
-
2021牛客多校3 - Kuriyama Mirai and Exclusive Or(差分+倍增)
题目链接:点击查看题目大意:给出一个长度为 nnn 的序列,现在需要执行 mmm 次操作,每次操作分为下列两种类型:0 l r x:区间 [l,r][l,r][l,r] 内的数都异或上 xxx1 l r x:区间 [l,r][l,r][l,r] 内的数异或上一个首项为 xxx 公差为 111 的等差序列,具体来说就是 a[l]⊕x,a[l+1]⊕(x+1),...,a[r]⊕(x+r−l)a[l]\oplus x,a[l+1]\oplus (x+1),...,a[r]\oplus (x+r-l)a[原创 2021-08-05 21:06:35 · 251 阅读 · 0 评论 -
CodeForces - 1491C Pekora and Trampoline(差分+贪心)
题目链接:点击查看题目大意:给出一个长度为 nnn 的序列 aaa,aia_iai 表示第 iii 个蹦床的强度,当从第 iii 个蹦床起跳的话可以跳到 i+aii+a_ii+ai 的位置,但是相应的第 iii 个蹦床的强度会减少一,更具体的来说,假如在蹦床 iii 起跳后,会有 ai=max(ai−1,1)a_i=max(a_i-1,1)ai=max(ai−1,1)。问最小需要多少次弹跳,才能使得所有的蹦床强度都等于 111题目分析:口胡了一个 n2n^2n2 的算法,交了一发之后发现会被卡成原创 2021-06-04 11:48:45 · 574 阅读 · 0 评论 -
牛客 - 牛牛的滑动窗口(单调栈+思维+差分)
题目链接:点击查看题目分析:给出 nnn 个数,定义滑动窗口的贡献是其中最大值与最小值的乘积,现在问对于长度分别为 [1,n][1,n][1,n] 的滑动窗口,贡献之和分别是多少题目分析:考虑暴力解法,是直接 RMQRMQRMQ 预处理一下,然后 O(n2)O(n^2)O(n2) 去模拟整个过程正难则反,考虑正这去枚举区间不行,那么我们是否可以通过枚举每个数字,从而计算每个数字对区间的贡献呢根据滑动窗口的定义,不难发现在每个长度下的滑动窗口,对于每个位置来说,都有可能作为一次窗口的起点或终点(如果越原创 2021-06-01 15:10:45 · 505 阅读 · 3 评论 -
CodeForces - 731D 80-th Level Archeology(线段树+暴力/差分)
题目链接:点击查看题目大意:给出 n 个数列,再给出一个模数 mod,每次操作可以将所有的数字进行:x = x %mod + 1 操作,问至少进行多少次操作,才能使得 n 个数列按照字典序非降序排列题目分析:思维不够暴力来凑。。感觉很像是威海线段树维护哈希暴力取模的那个题,事实证明是可以类比过去的先说我的思路,对于任意两个相邻的数列来说,先找出其首个不相同的位置 pos,然后记录一下其值,在代码中我记做了 a 和 b,因为对于这两个数列来说,a 和 b 的大小关系就直接决定了这两个数列的相对大小原创 2020-11-25 18:25:25 · 230 阅读 · 0 评论 -
CodeForces - 1452E Two Editorials(二阶差分)
题目链接:点击查看题目大意:给出 m 个区间,现在可以选择两段长度为 k 的区间进行覆盖,记为 a 和 b,对于每个区间来说,假设被 a 覆盖的长度为 len_a,被 b 覆盖的长度为 len_b,假设 len_a > len_b,那么其将会被 a 覆盖,且提供 len_a 的贡献,反之被 b 覆盖且提供 len_b 的贡献,问如何选择 a 和 b 可以使得总贡献最大题目分析:比较显然的一个 n^3 的暴力就是:O( n ) 枚举 a,O( n ) 枚举 b,最后 O( n ) 枚举每个区间计原创 2020-11-20 17:08:46 · 508 阅读 · 8 评论 -
牛客多校8 - Enigmatic Partition(二阶差分)
题目链接:点击查看题目大意:首先定义 “ n 的拆分 ” 是 n = a[ 1 ] + a[ 2 ] + ... + a[ m ] ,在本题中,n 的拆分需要满足几个条件:a[ i ] <= a[ i + 1 ] <= a[ i ] + 1 ,i ∈ [ 1 , m ] 1 <= a[ i ] <= n , i ∈ [ 1 , m ] a[ m ] = a[ 1 ] + 2设 f( n ) 为满足上述所有条件下,n 的拆分有多少种,现在给出 t 组查询,每组查询给...原创 2020-08-04 02:22:50 · 2204 阅读 · 4 评论 -
牛客 - 减成一(差分数组)
题目链接:点击查看题目大意:存在n个数,每次操作可以任选一个区间使得区间内的所有数字减一。问最少多少次操作,可以让所有数都变成1。题目分析:之前做过一道类似的原题:https://blog.youkuaiyun.com/qq_45458915/article/details/103228424然后这个题目是需要将所有数字减少为 1 ,只需要将 a[ 0 ] 改为 1 就行了代码:#include<iostream>#include<cstdio>#include.原创 2020-05-31 21:14:24 · 789 阅读 · 0 评论 -
中石油训练赛 - 围栏翻新(思维+贪心+差分)
题目描述小明的破旧围栏又要喷涂油漆了。围栏由N个木板构成,每个宽度都为1cm,但是高度各不相同。他给自己买了一个喷漆机器,喷涂头恰好也是1cm宽。小明的喷漆机器是直接喷射的,因此喷头的每一个部位必须一直接触到木板,否则尤其会污染他的农田。并且机器也必须时刻与地面平行。可以看出,小明每次必须在同一高度对木板喷涂,可以从左到右直到没有围栏可以喷漆。这样,若干次喷漆之后,就可以将围栏翻新啦!由于...原创 2019-11-24 20:38:20 · 7818 阅读 · 0 评论 -
牛客 - 二分(差分)
题目链接:点击查看题目大意:现在玩猜数字游戏,如果猜的数字比答案要大,就输出 ' + ' ,比答案小,就输出 ' - ' ,猜中了答案,输出 ' . ',给出这样的 n 条指令,问最多有多少条指令可以同时保证正确性题目分析:感觉蛮不错的一道差分题目,分类讨论一下:' . ' :当前指令只对 pos 位置的数做出了贡献 ' + ' :当前指令对 [ -inf , pos - 1 ] 内的数做出了贡献 ' - ' :当前指令对 [ pos + 1 , inf ] 内的数做出了贡献因为数据是离.原创 2020-05-26 13:47:56 · 476 阅读 · 0 评论 -
CodeForces - 1343D Constant Palindrome Sum(思维+差分数组)
题目链接:点击查看题目大意:给出 n 个数,保证 n 是偶数,且每个数的范围都在 [ 1 , k ] 之间,现在问我们至少需要给多少个数重新赋值,使得可以满足条件:所有的数的值域都在 [ 1 , k ] 之间 对于 i ∈ [ 1 , n/2 ] ,满足 a[ i ] + a[ n - i + 1 ] = x ,且所有的 x 都相等题目分析:不难看出是个贪心问题,但是如果真的以贪心的角...原创 2020-04-22 15:12:56 · 383 阅读 · 0 评论 -
牛客 - 货物种类(差分)
题目链接:点击查看题目大意:有 n 个仓库,接下来有 m 次进货,每次进货会向[ l , r ]区间内的仓库进入种类为 w 的货物,最后问哪个仓库的货物种类最多题目分析:看到是区间问题,下意识想到了线段树,但实际上线段树处理这种不同颜色的问题一般都是状态压缩,但显然这个题目货物的种类范围到达了1e9,所以肯定不是颜色统计的模板题了,比赛的时候差分的想法在脑中浮现过一次,但很快就被自己否决了...原创 2020-02-23 01:00:33 · 653 阅读 · 0 评论 -
CodeForces - 1000C Covered Points Count(差分+思维)
题目链接:点击查看题目大意:给出n个区间,现在要求输出覆盖次数为1,2,3....n-1,n的点分别有多少个题目分析:一开始看到区间问题想用线段树去做,但想了想又可以直接用差分去做,不过因为数比较大,所以用map代替差分数组,后续求前缀和的时候就可以实时维护答案了代码:#include<iostream>#include<cstdio> #includ...原创 2020-01-23 16:10:43 · 312 阅读 · 0 评论 -
POJ - 1743 Musical Theme(二分+后缀数组+差分数组)
题目链接:点击查看题目大意:给出n个连续的数字组成的序列,现在要求出其中两个不重叠的字序列,满足两个子序列“相似”,相似的定义是两个子序列当且仅当长度相等并且每一位的数字差都相等,现在需要求出最大的两个相似子序列题目分析:因为是要求两个不重叠的重复子序列,显然是后缀数组的模板题目之一,不过有点不同的是我们需要先预处理转换一下,根据题目“相似”的条件,我们很容易可以想到将整个数组转换为差分数...原创 2020-01-17 23:06:44 · 221 阅读 · 0 评论 -
Gym - 101775J Straight Master(差分数组)
题目链接:点击查看题目大意:给出n种数,每种数有a[i]个,每3-5种连续的数都可以被消去,现在问给出的所有数字最后能否全部消去题目分析:正难则反,题目问能否将数字全部消去,我们不妨设一开始的起点每个数字都是0个,然后每次增加区间[l,r]中的数,判断能否到达目标状态,这样问题就转换成了一道差分区间的题目,我们对于初始的n个数的数量之间进行差分,这样前面的正数一定要匹配后面的负数才行,又因...原创 2019-12-07 01:03:35 · 317 阅读 · 0 评论 -
CH - 0304 IncDec Sequence(差分+思维)
题目链接:点击查看题目大意:给定一个长度为 n(n≤10^5 ) 的数列 {a_1,a_2,…,a_n},每次可以选择一个区间 [l,r],使下标在这个区间内的数都加一或者都减一。求至少需要多少次操作才能使数列中的所有数都一样,并求出在保证最少次数的前提下,最终得到的数列可能有多少种。题目分析:虽然是看过大蓝书之后再来做这个题的,但还是有一些细节没有想明白,想了好半天才算是消化了这个题目,...原创 2019-11-28 02:26:49 · 346 阅读 · 0 评论 -
2019ICPC(上海) - Light bulbs(离散化+差分)
题目链接:点击查看题目大意:给出n个灯泡,初始化全都是熄灭状态,给出m次操作,每次操作给出闭区间[l,r],将该区间内的灯泡状态翻转,即熄灭的灯泡变为打开状态,打开的灯泡变为熄灭状态,求最后打开灯泡的数量题目分析:一开始想的是线段树,写到一半发现内存开不下,然后就想树状数组,在开始重新返工之前又想到了简单差分,于是抱着试一试的心态写了一下,果不其然的T掉了,因为没看清楚数据范围。。虽然n是...原创 2019-09-17 14:54:07 · 346 阅读 · 0 评论 -
HDU - 6514 Monitor(二维差分)
题目链接:点击查看题目大意:给出一个n*m的矩阵,开始全部初始化为0,然后给出一系列的小矩阵的范围,小矩阵中的格子全部变为1,最后再给出一些查询,查询矩阵范围内是否所有的格子都是1,是的话输出yes,否则输出no题目分析:二维差分+二维前缀和,这里放一篇个人觉得不错的差分博客:点击查看然后二维前缀和不多赘述了,很早之前就已经掌握了的知识了。因为初始化全部为0,我们在将一系列的小...原创 2019-08-21 13:28:00 · 420 阅读 · 0 评论 -
POJ - 3263 Tallest Cow(简单差分)
题目链接:点击查看题目大意:给定一排n只奶牛,和最高的奶牛,再给出m个条件,a b表示a能看到b,问满足条件后每只奶牛的最大高度题目分析:a能看到b,就表示a的高度大于等于b,再加上a和b之间的高度必须小于b,所以每次操作可以让闭区间[a+1,b-1]内的奶牛高度都减一即可简单差分,注意记得判重#include<iostream>#include<cstdio&g...原创 2019-08-21 10:18:10 · 341 阅读 · 3 评论