
前缀和与差分
分享关于前缀和的题解文章
MangataTS
一个爱折腾的Coder
展开
-
牛牛的猜球游戏(动态规划+前缀影响)
题目连接 https://ac.nowcoder.com/acm/contest/19483/F 题面 思路 我们用一个f[i][j]f[i][j]f[i][j]表示第i个操作中第j个杯子中的球,因为我们不断地进行一个交换杯子的操作,所以我们会有一个前缀的影响,所以每次我们直接通过rrr和l−1l-1l−1进行一个映射就好了 代码 #include<bits/stdc++.h> using namespace std; const int N = 1e5+10; int dp[N][10]原创 2022-02-15 00:47:51 · 700 阅读 · 0 评论 -
智乃酱的区间乘积(前缀积+逆元)
题目链接 https://ac.nowcoder.com/acm/contest/19483/A 题面 思路 我们要求区间的乘积在1e9+71e9+71e9+7模下,那么这就是个前缀积的模板啦,和前缀和类似的,只不过我们需要初始化pre[0]pre[0]pre[0]为1,然后我们做一个除法的时候不能直接除,因为这样会有精度问题,所以这里我们需要使用逆元来协助我们进行除法运算 代码 #include<bits/stdc++.h> using namespace std; #define ll l原创 2022-02-15 00:10:23 · 998 阅读 · 0 评论 -
小红的记谱法(模拟+前缀和)
题目链接 https://ac.nowcoder.com/acm/contest/23479/F 题面 思路 我们每次遇到一个<就让当前的权值自增1,遇到>就自减1,然后每次遇到一个字符的时候,我们就看现在的权值是多少 大于等于0,那么我们直接在后面添加这么多的低音即.就好了 如果小于0,那么我们直接在后面添加负的这么多高音即*就好了 代码 #include<bits/stdc++.h> using namespace std; //----------------自定义部分-原创 2022-02-09 12:01:31 · 209 阅读 · 0 评论 -
蓝彗星(差分+前缀和)
题目链接 https://ac.nowcoder.com/acm/contest/23479/C 题面 思路 我们知道彗星每次出现的持续时间,以及出现时间,很容易就联想到区间覆盖问题,有的同学可能就直接去写树状数组或者线段树了,其实没必要,我们直接差分处理就好了,关于差分和前缀和的讲解链接:https://acmer.blog.youkuaiyun.com/article/details/122371482 现在你应该懂差分和前缀和了吧?那我们现在来看怎么使用差分,因为我们想知道这个时间是否出现过红彗星,那么我们就希原创 2022-02-09 11:08:11 · 314 阅读 · 0 评论 -
AcWing 1884. COW(前缀和)
题目连接 https://www.acwing.com/problem/content/1886/ 思路 对于一个COW单词,因为不要求连续,所以我们只需要对C求一个前缀和,W求一个后缀和,然后循环一边,遇到的是一个O的时候我们就将O的前缀和乘上W的后缀和就是我们当前O能组成的所有单词数量 代码 #include<bits/stdc++.h> using namespace std; //----------------自定义部分---------------- #define ll long原创 2022-02-06 20:51:44 · 251 阅读 · 0 评论 -
AcWing 1913. 公平摄影(前缀和+STL)
题目连接 https://www.acwing.com/problem/content/1915/ 思路 对于这个牛牛的位置和不同牛牛我们可以用一个pair存储,然后我们实际上要求的答案是 连续同种牛牛的最长距离 连续荷斯坦牛的最长距离 连续根西岛牛的最长距离 连续两种牛牛但是两种牛牛的数量都是相同的 因为位置是乱序的,所以我们先把牛牛按照位置信息排个序 那么对于第一种情况,我们直接O(N)扫过去即可,对于第二种情况,我们先对当前得序列求一个前缀和,我们假定H牛牛是正数、G牛牛是负数,那么我们在循原创 2022-02-06 20:49:32 · 287 阅读 · 0 评论 -
AcWing 1922. 懒惰的牛(前缀和 or 双指针)
思路 因为数据范围很小,所以我们可以直接用前缀和的方法做,当然也可以用尺举法,后面补上 前缀和 因为x的数据范围就是1e6,那么我们直接把对应地点的值加上去就好了 #include<bits/stdc++.h> using namespace std; #define ll long long #define mod 1000000009 #define endl "\n" #define PII pair<int,int> int dx[4]={0,-1,0,1},dy[4]={原创 2022-02-06 20:47:37 · 215 阅读 · 0 评论