前缀和&差分
文章平均质量分 65
前缀和差分题目集合
小酒窝.
研一菜鸡一只,欢迎来交流讨论,一起进步!
展开
-
CF - C. Helping the Nature(差分)
发现如果让一个 >1 的位置上的数增加,只能用 操作 1;如果让一个 >1 的位置上的数减小,只能用操作 2。把 >1 的所有位置都变成 0 之后,再用操作 2 和 操作 3 处理 1 位置即可。对于操作 2,转化为 d[i] -= 1,d[n+1] += 1,而对于n+1位置不用考虑,所以只有。对于操作 3,转化为 d[1] += 1,d[n+1] -=1,同样 n+1 位置不用考虑,只有。问,最少多少次操作能把所有数变为 0?对于区间位置,要能习惯性的转化为差分。对于操作 1,转化为。原创 2022-10-12 14:54:46 · 228 阅读 · 0 评论 -
CCPC 威海 - H. Message Bomb —— 流动前缀和,妙
题目链接题意:给出 m 个人,n 个群组,s 个操作;(1≤n≤100000,1≤m≤200000,1≤s≤1000000)(1≤n≤100000,1≤m≤200000,1≤s≤1000000)(1≤n≤100000,1≤m≤200000,1≤s≤1000000)每个操作有三种类型:1 x y:表示 人x 进入 群组y;2 x y:表示 人x 退出 群组y;3 x y:表示 人x 在 群组y 中发送了一条消息,群组y 中除了 x 的所有人都会收到。问,最终每个人收到了多少条消息?思原创 2022-04-14 18:11:28 · 477 阅读 · 0 评论 -
Convoluted Intervals(差分,枚举)
题意:给定 n 个数对,表示区间 [l,r][l, r][l,r]。现在可以挑选两个数对(可能相同),得到区间 [li+lj,ri+rj][l_i+l_j, r_i+r_j][li+lj,ri+rj],这个区间中的所有数++。对于所有的挑选进行更新,输出最后区间中的所有数。n≤2e5,1≤m≤5000.n ≤2e5, 1 ≤m ≤5000.n≤2e5,1≤m≤5000.思路:差分思路,只考虑区间中两个端点的变化;桶排思想,将所有的区间端点放到对应位置的桶中。对于一个位置 i+j,那么原创 2022-01-15 10:17:50 · 356 阅读 · 0 评论 -
2021江西省赛——E. Color Sequence(高端前缀和+二进制)
题目链接题意:求长度为 n 的数列中,有多少连续的子数列,其中元素的出现次数都为偶数?数列长度 n ≤ 1e6,元素种类 m ≤ 20。思路:数列长度在1e6,所以时间复杂度要控制在 n 或者 nlogn。求满足条件的子串个数,要在O(n)的复杂内,之前遇到过:求和为7的倍数的字串个数、求01数量相等的子串个数。其做法相同,map标记边走边处理,看当前的值之前是否出现过,如果是,那么加上前面出现的次数,次数++。 这道题同样!用一个set,从前往后走,始终保证set中的元素始终都出现奇数原创 2021-11-13 10:17:05 · 667 阅读 · 0 评论 -
NOI串(前缀和)
退阶:给出一个仅含N,O,IN,O,IN,O,I的字符串,问其子序列中有多少个NOI串NOI串NOI串?例:串NNOOIINNOOIINNOOII 中一共有8个NOINOINOI。思考:计算NOI的个数,每遇到一个I,都要加上前面NO的个数。计算前面NO的个数,每遇到一个O,都要加上前面N的个数。于是就是前缀和的思路。Code:#include <iostream>using namespace std;const int N = 200010, mod=1e9+7;in原创 2021-09-19 23:24:48 · 229 阅读 · 0 评论 -
汇总 前缀和 & 差分 的高端操作~
本以为前缀和就是求个前缀数组,然而这几天发现了 前缀和 的另外一些重要性质,解决了许多棘手的问题!在这里汇总一下。原创 2021-08-28 10:55:20 · 1124 阅读 · 1 评论 -
Subsequences Summing to Sevens( 前缀和+小技巧!)
时间限制: 1 Sec 内存限制: 64 MB题目描述Farmer John’s N cows are standing in a row, as they have a tendency to do from time to time. Each cow is labeled with a distinct integer ID number so FJ can tell them apart. FJ would like to take a photo of a contiguous group原创 2021-04-05 21:19:34 · 636 阅读 · 0 评论 -
金牌厨师HiLin与HJGG(二维前缀 + 二分!)
原题链接:https://ac.nowcoder.com/acm/contest/3570/L;分析:一看题目,求矩形中所有值的和,差不多就是二维前缀和。但是,如果简单的用二维前缀和遍历每一个点,每一个边长,超时!接着,我们看,这个边长是可以二分的!具备二分的条件:区间具有单调性!边长越大,求出的矩阵所有值的和越大!于是,我们就二分边长!这样,将遍历边长的复杂度O(n)降低为O(log n)!总复杂度:O(n * n * log n)code:#include<iostream&原创 2021-03-18 10:43:57 · 648 阅读 · 0 评论