![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
前缀和
文章平均质量分 72
oj
Ypuyu
Ypuyu
展开
-
[前缀和+模板] 前缀和模板
文章目录0. 前言1. 一维前缀和2. 二维前缀和0. 前言预处理数组的前缀和,可以达到 O(1)O(1)O(1) 时间得到区间和。前缀和大致分为两类,一维前缀和、二维前缀和。预处理前缀和数组下标均从 1 开始,不用考虑边界情况,保证推导式子的统一性。加速 cin、cout 的技巧:int main() { // main 后加上这两句,可以媲美scanf、printf,原理是关闭cin、cout与scanf、printf的数据同步流(貌似) ios::sync_with_stdi原创 2020-10-20 09:00:08 · 535 阅读 · 0 评论 -
[M前缀和] lc3255. 长度为 K 的子数组的能量值 II(前缀和+二分+双周赛137_1+双周赛137_2)
本来好好的一个前缀和问题,被我硬生生搞成二分,最近研究了下整数二分的题目,本想实践一下,就花了较多实践。原创 2024-08-18 01:30:59 · 316 阅读 · 0 评论 -
[M前缀和] lc3148. 矩阵中的最大得分(前缀和变种+二维前缀和+脑筋急转弯+好题)
类似模拟的 dp 超时了…时间复杂度确实太高。原创 2024-08-15 01:57:16 · 261 阅读 · 0 评论 -
[M前缀和] lc3152. 特殊数组 II(前缀和变种+二分+lower_bound操作+好题)
本题思路比较明确哈。首先自己想的是二分的思路,但碍于一些细节,代码没有写出来,但思路没啥问题。看题解用的是前缀和的思路,是正解,更加简单直接。官解中用的 dp,没啥必要在这里。明显,前缀和思路考虑问题更加少,代码也十分好写。原创 2024-08-14 04:11:30 · 973 阅读 · 0 评论 -
[M数学] lc2171. 拿出最少数目的魔法豆(数学+前缀和)
前缀和算法原创 2024-01-19 00:26:42 · 336 阅读 · 0 评论 -
[贪心] aw3774. 亮灯时长(思维+后缀和+代码细节+CF1000B)
文章目录1. 题目来源2. 题目解析1. 题目来源链接:3774. 亮灯时长题解:清晰的代码,前缀和照样做。2. 题目解析CF1000 B分析后并不难,但是死于代码实现上。区间由两点分割,且下标从 0 开始,前缀和维护一个区间和,一开始总以为前缀和没从 1 开始,不太方便做,但是实际上并不需要这样考虑。以下标 i 分成总共 n+1 个区间段,i 从 1 开始到 n+1,直接做前缀和即可,light[1]-light[0] 就是区间 [0,1] 的区间和,也将其看成第一个奇数区间。详原创 2021-07-20 22:35:36 · 136 阅读 · 0 评论 -
[M前缀和] lc525. 连续数组(前缀和+知识理解+思维)
文章目录1. 题目来源2. 题目解析1. 题目来源链接:525. 连续数组2. 题目解析前缀和变种,思维型题目。在此 s[i] 定义为,前 i 个数中,1 的个数减去 0 的个数的差值。在此定义下,[j,i] 区间的 1 的个数减去 0 的个数的差值就是 s[i]-s[j-1]。那么针对 i 位置,以 i 位置为终点,j 为起点,若能构成答案,则必然有 s[i]-s[j-1]=0 即 1 的个数与 0 的个数相等,即 s[i]=s[j-1]。故相当于统计 i 位置之前是否存在与 s[i] 相等原创 2021-06-03 11:59:12 · 124 阅读 · 0 评论 -
[H前缀和] lc1074. 元素和为目标值的子矩阵数量(前缀和+哈希优化+知识理解)
文章目录1. 题目来源2. 题目解析1. 题目来源链接:1074. 元素和为目标值的子矩阵数量相关题目:[线性dp] 最强对手矩阵(牛客+线性dp+二维前缀和+代码优化+思维+好题)2. 题目解析是一个经典题目了,二维前缀和枚举子矩阵左上方、右下方的点,时间复杂度 O(n2m2)O(n^2m^2)O(n2m2)。class Solution {public: int numSubmatrixSumTarget(vector<vector<int>>&原创 2021-05-29 12:22:22 · 190 阅读 · 0 评论 -
[前缀和] aw3574. 乘积数量(前缀和+组合数学)
文章目录1. 题目来源2. 题目解析1. 题目来源链接:3574. 乘积数量2. 题目解析所有方案满足等差数列求和公式,故所有方案数为 n(1+n)/2。会爆 int 注意开 long long。dp 解法:f[i][0] 表示以 i 结尾的正数索引的方案数f[i][1] 表示以 i 结尾的负数索引的方案数答案需要累加 i: 1~n#include <bits/stdc++.h>using namespace std;typedef long long LL;原创 2021-05-26 22:51:08 · 171 阅读 · 0 评论 -
[双指针] aw3493. 最大的和(双指针+前缀和+滑动窗口+贝壳找房2021)
文章目录1. 题目来源2. 题目解析1. 题目来源链接:3493. 最大的和2. 题目解析每个数两种状态,可选、不可选。若想将可选状态的和最大,那就得让不可选的和最大,有区间长度限制,就采用滑动窗口维护即可。两种方法,前缀和或者双指针。前缀和维护不可选状态的数的前缀和,方便进行滑动窗口的区间查找。双指针就直接维护滑动窗口找到窗口内的不可选状态数的最大和即可。本质是一样的,都是找到长度限制下不可选状态的最大和。注意数据范围 1e5*1e5 会爆 int,记得开 long long。时间复杂度:原创 2021-05-12 09:24:15 · 115 阅读 · 0 评论 -
[字典树] aw3485. 最大异或和(trie变种+贪心+前缀和+滑动窗口+美团2021)
文章目录1. 题目来源2. 题目解析1. 题目来源链接:3485. 最大异或和相关题目:[字典树] 最大异或对(trie+贪心)2. 题目解析trie 的经典应用。三种区分度:三重暴力,维护起点 i、终点 j、循环 [i, j] 区间求异或值即可,过掉 n <= 100 的数据,过 20%。两重暴力,优化上述做法。固定起点,向右枚举终点,边枚举边计算当前区间的异或总和,这样就不需要在重复计算区间内的异或和了,优化掉一个 n,过掉 n<=1000 的数据,过 50%。最终做法原创 2021-05-10 23:53:11 · 257 阅读 · 0 评论 -
[前缀和] aw3412. 邻域均值(第22次CCF认证_2+二维前缀和+水题)
文章目录1. 题目来源2. 题目解析1. 题目来源链接:3412. 邻域均值2. 题目解析CCF 认证的第二题也算是送分题。枚举每个点,再确定其邻域的坐标即可,注意边界情况。预处理二维前缀和。代码:二维前缀和:// 二维前缀和,枚举每个点的所有邻域即可,注意边界情况#include <iostream>#include <cstring>#include <algorithm>using namespace std;const int N =原创 2021-04-22 21:06:48 · 232 阅读 · 0 评论 -
[H前缀和] lc363. 矩形区域不超过 K 的最大数值和(二维前缀和+lower_bound()+好题)
文章目录1. 题目来源2. 题目解析1. 题目来源链接:363. 矩形区域不超过 K 的最大数值和相关题目:[线性dp] 最强对手矩阵(牛客+线性dp+二维前缀和+代码优化+思维+好题)2. 题目解析很基础的一道二维前缀和问题。暴力的话需要枚举所有矩阵,再计算的话就需要 O(n3m3)O(n^3m^3)O(n3m3) 的时间复杂度。配合二维前缀和可以到 O(n2m2)O(n^2m^2)O(n2m2) 的时间复杂度。但是对于本题还是不能通过。我们需要 O(n2m)O(n^2m)O(n2m) 或者原创 2021-04-22 20:31:07 · 118 阅读 · 0 评论 -
[线性dp] 最强对手矩阵(牛客+线性dp+二维前缀和+代码优化+思维+好题)
文章目录1. 题目来源2. 题目解析1. 题目来源链接:最强对手矩阵相关:[Edp] lc53. 最大子序和(dp+分治+算法优化+详细分析)知乎:最大子段和到最大子矩阵的一些思考LC 高分题解,特别棒:面试题 17.24. 最大子矩阵2. 题目解析非常非常经典的一道题目,最大子矩阵、最大子阵和等等…方法也是多种多样,简单罗列一下,规定行列分别为 n、mn、 mn、m暴力:O(n3m3)O(n^3 m^3)O(n3m3)二维前缀和:O(n2m2)O(n^2m^2)O(n2m2)原创 2021-04-21 14:18:39 · 198 阅读 · 0 评论