![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
差分
goto_1600
我何来寂寞,哪有寂寞可言。
展开
-
lzh的蹦床 差分,贡献,思维
题意: 给定一个序列a,每次走都会从i跳到i+a[i],并且可以把路径上的数都减去1,和1取max,问最小走多少趟把整个序列变为1。 思路: 由于可以都从1开始遍历,从前往后遍历,考虑第i个数被遍历的时候前面的数对ta造成的影响,由于每个数都要从a[i]降到2,是一段区间,显然可以差分维护,所以假设前面的贡献我们已经更新,我们计算可以少走多少趟,那还有个问题,如果前面的数对他造成的影响溢出了会怎么样呢?那么也就是说a[i]变成1以后又要多走溢出次的累计到后面的差分里去。那么这题就做完了。 // Probl.原创 2021-09-12 21:43:17 · 225 阅读 · 2 评论 -
Extreme Subtraction
题意: 每次可以将前缀减1或者后缀减1,问是否存在一种方法使得全部构成0. 思路: 构建差分序列,然后操作就可以变成将d[1]-1 d[X],Xϵ\epsilonϵ(2,n+1)加上1 另外一种操作就是将d[X],Xϵ\epsilonϵ(1,n)减去1 将 n+1 + 1 然后我们将题目所给的差分数组算出来,关于正数的我们可以不管,因为有操作2,最后操作完满足1~n的差分值都是0,关于负数的只有操作1可以,我们只需要讨论∑\sum∑|负数之和|<=d[1]就行了。 AC代码: #include<原创 2020-11-05 14:38:43 · 380 阅读 · 0 评论 -
树上差分
#include<iostream> #include<algorithm> #include<cstdio> #include<cstring> #include<cmath> #include<map> #include<vector> #include<queue> #include<s...原创 2020-05-05 17:37:22 · 222 阅读 · 0 评论 -
差分 100. 增减序列
只要满足从2开始到n的差分数组d为0就行了,总共有四种操作,其中第四种是无效的,第一种最有效,我们尽量去去选一正一负的来操作,这样可以消掉两个第二第三种做法只能消掉一个,那么我们算出正数差分总和,和负数差分的总和,两个的max就是操作的数量,然后最后有多少种结果呢,就是最大值-最小值+1,因为d1 可以从 0~max(p,q)-min(p,q) ...原创 2020-04-28 21:39:14 · 312 阅读 · 0 评论 -
codeforce D. Constant Palindrome Sum (差分+思维)
这题看了大佬的博客,才明白是用差分做,差分的前缀和的下标代表a[i]+a[n-i+1]的值,我们只要预处理出来每个范围内的操作次数,最后利用差分思想前缀和就能做出这道题了,不过预处理区间的时候别忘了两数之和要特判一下。 #include<iostream> #include<algorithm> #include<cstdio> #include<cst...原创 2020-04-22 14:31:14 · 287 阅读 · 0 评论 -
牛客比赛货物种类,差分和map
题目 #include<iostream> #include<vector> #include<map> using namespace std; const int N=100010; vector<int>add[N],de[N]; map<int,int> vis; int main() { int n,m; cin...原创 2020-02-24 17:13:58 · 332 阅读 · 0 评论 -
查分前缀和
FJ’s N (1 ≤ N ≤ 10,000) cows conveniently indexed 1…N are standing in a line. Each cow has a positive integer height (which is a bit of secret). You are told only the height H (1 ≤ H ≤ 1,000,000) of t...原创 2020-01-27 22:17:55 · 293 阅读 · 0 评论