![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
差分/前缀和
光球层上的黑子
是个菜狗
展开
-
CF 1490G - Old Floppy Drive 思维,二分
题目链接https://codeforces.com/problemset/problem/1490/G题意给定数组a(如1,2,2,3),构造一个A数组,为a数组的循环拼接(如1,2,2,3,1,2,2,3…)。m个询问,对于每个询问q,输出最小的i,使得A数组前i+1个数字的和大于等于q思路我们需要如下几个数组sum:a的前缀和max_:a前缀和的最大值易知max_数组单调不降,可用二分搜索。在某一次询问q中,如果q<=max_[n],那就是说答案比n小,我们在max_数组二分查原创 2021-03-05 18:38:16 · 144 阅读 · 0 评论 -
CodeForces - 1443D Extreme Subtraction 差分应用
题目链接https://vjudge.net/problem/CodeForces-1443D/origin题意每一次可以对前缀或后缀减少小于等于n的值,问是否可以变为全0。思路首先明确,由于可以多次操作,所以减的值其实是没有小于等于n的限制的,可以当成若干次减少1操作。看到区间操作,考虑差分,当元素全为0时,其差分数组也是全为0,我们考虑两种操作对于差分数组的影响,假设第一种操作到i为止,第二种操作从i开始,那么第一种操作后:diff[1]-1,diff[i+1]+1,第二种操作后:diff[原创 2020-11-05 22:35:29 · 215 阅读 · 0 评论 -
2020多校3 1004 Tokitsukaze and Multiple
题目链接http://acm.hdu.edu.cn/showproblem.php?pid=6794题意给出长为n的数组和m,可以任意次合并相邻元素,求最多可以同时有多少个元素模m为0思路通过前缀和相减,我们可以很方便的维护某一段区间的和,以此为启发,我们首先维护一下数组前缀和,当存在p1<p2同时p1前缀和模m和p2前缀和模m值相等时,说明p1和p2这段数组是可以通过合并达到要求的。我们预处理出前缀和,利用map维护某一前缀和模p的数字是否出现过。从左到右遍历每个元素,如果这个元素前缀和原创 2020-11-01 17:31:09 · 121 阅读 · 0 评论 -
Codeforces Round #320 “Or“ Game 位运算 前缀和 暴力
题目链接http://codeforces.com/problemset/problem/578/B题意2e5数组,可对任意元素做*x的操作,最多k次,求处理后每个元素按位或的最大值思路首先可以证明,k次一定是对同一个数进行操作。因为x大于2,所以操作后一定会让二进制串增大最少一位,假如不是全分配给一个,则一定可以重新分配成全分配给一个,最高位更大,答案更大的情况。不能简单的对最大的数字做k次操作。比如100 110,x=2,k=1时,若对100做操作答案为1110,若对110做操作答案为11原创 2020-10-17 22:03:48 · 70 阅读 · 0 评论 -
ICPC小米 Matrix Subtraction 二维差分
题目链接https://ac.nowcoder.com/acm/contest/7501?&headNav=www#question题意给定 n* m 矩阵,可以多次对矩阵中a* b的小矩阵全部元素减一,求是否可以全减为0思路从上到下,左到右遍历每一个元素,对于每一个元素当前值ai,将以他为第一行第一列的a*b矩阵全部减去ai,遍历完成后,如果所有值都为零,则说明可以实现,否则不能。暴力算法复杂度是O(nmab)的,我们可以用二维差分优化区间修改。一维差分diff[i]=a[i]-a[原创 2020-10-25 16:55:39 · 416 阅读 · 2 评论