前缀和相关
文章平均质量分 65
C+G
也就那样
展开
-
(PAT详细题解)PAT甲级--Cars on Campus
文章目录题目题目翻译题目大意总结解题思路解题代码拆解整合函数得到答案题目OJ平台题目翻译题目描述原文Zhejiang University has 6 campuses and a lot of gates. From each gate we can collect the in/out times and the plate numbers of the cars crossing the gate. Now with all the information available,原创 2021-09-16 21:58:39 · 1138 阅读 · 0 评论 -
航班预订统计--差分数组解决
文章目录题目题目解析解题代码题目oj平台题目解析这题拿到后,我们很快想到可以直接暴力累加,而这道题难度是中等,按LC这尿性,难度中等的怎么可能给你这么简单就过去了,事实也是确实如此,然后我看了看评论区,看到了差分二字,瞬间想到曾经做过一道差分的题目:检查区域是否被覆盖看完之前做过的题目的文章后,瞬间就有了思路,这不就差分吗,会写后就很简单,只要构建好整个区间内的左右值,就能通过在外面循环一次得到累加结果。解题代码C++代码class Solution {public: v原创 2021-08-31 20:43:34 · 93 阅读 · 0 评论 -
leetcode教师节特典--找到需要补充粉笔的学生编号
文章目录题目题目解析解题代码我的个人小站:acking-you.github.io题目OJ平台题目解析实际上就是一个前缀和+二分的处理,我一旦爆出前缀和+二分,应该就都有思路了!解题代码这里偷懒使用了STL,当然也可自己去写二分。class Solution {public:using ll = long long; int chalkReplacer(vector<int>& chalk, int k) { int n = chalk原创 2021-09-10 14:22:46 · 82 阅读 · 0 评论 -
四种方法检查某区域是否被覆盖--差分数组
文章目录题目方法一:暴力数组记录方法二:基于排序的贪心思想方法三:暴力数组的优化,只更新重合部分方法四:差分+前缀和 进行验证题目方法一:暴力数组记录class Solution {public: bool isCovered(vector<vector<int>>& ranges, int left, int right) { bool check[51] = {0}; for(auto&& t:ranges原创 2021-07-23 11:24:15 · 380 阅读 · 0 评论 -
按权重随机选择--计算机系统调度策略之一:前缀和+二分
文章目录题目对按权重的随机选择分析操作系统对该算法调度的应用实例解题代码题目OJ平台对按权重的随机选择分析由于需要保证选择某个物品按照其对应的权重概率进行选择,那么这个问题如何解决呢?我们把每个物体所占的权重按照长度进行处理,比如有 下标 0 的权重为 3 , 1 的为 1 ,2 的为 2。则他们的概率依次为 3/6、1/6、2/6。而我们的计算机语言中一般会有一个 rand() 函数用于产生随机的整数,对于这个例子我们只要让它这个随机整数的产生范围控制在 [1,6] 之间就行,用 ran原创 2021-08-30 16:57:47 · 343 阅读 · 0 评论 -
公共前缀--不用内置函数和使用内置函数版本
文章目录题目:不用内置函数解题(c++)使用内置函数简化代码效率比较题目:不用内置函数解题(c++)解题步骤:1.寻找其中最短的字符串,记录其长度2.按列遍历,当出现不相等标记该列3.根据标记更新res字符串,最后返回它便是答案class Solution {public: string longestCommonPrefix(vector<string>& strs) { if(strs.size()==0)return "";原创 2021-04-17 16:14:12 · 75 阅读 · 0 评论 -
每日一题--关于异或前缀
文章目录题目分析解法两层循环代码:一层循环代码题目分析解法由于a = arr[i…j-1]b = arr[j…k]如果a = b,则a^b 必等于0,也就是arr[i] ^ a[…k] = 0。也就是说,若a = b满足,则 i…k 的连续序列的异或值就等于0,那么组合数如何求呢?由于i…k中 i 和 k 肯定是确定了的,得到一个序列异或为0后,我们的i 、j、k就可以通过将j的位置不断改变得到组合数。比如arr[0]^ arr[1]^ arr[2] = 0,则组合有:(0,1,2原创 2021-05-18 14:41:41 · 197 阅读 · 0 评论 -
(采油区域)二维前缀和+动态规划关系+分类讨论
文章目录题目逐步解析第一步:二维前缀和处理第二步:根据二维前缀和得出表示某k区间和表示第三步:以第二步为基础得出任意一点的左\右上角、左\右下角、任意两列\两行的最大k区域和值最后一步:枚举得到答案代码汇总得出答案题目oj平台逐步解析第一步:二维前缀和处理什么是前缀和?比如对于一个一维数组 nums,他的前 i 个数的总和就是下标i的前缀和,即 sum[i] 表示前i个 nums 数组元素之和。一维数组前缀和有以下关系:sum[i]=sum[i−1]+nums[i−1]sum[i] = su原创 2021-06-22 07:31:41 · 347 阅读 · 1 评论 -
前缀和的一周---连续数组
文章目录题目解题分析解题代码题目解题分析关于子数组和的问题,很快可以联想到前缀和(当然有时也想到滑动窗口),此题是二进制的相同数字问题,如果直接的前缀和,很明显只能通过暴力求解,想要优化为一次遍历的O(n)复杂度,就需要具备满足条件的子数组的头和尾前缀和能通过某种关系对应,比如昨天的同余关系,今天这个似乎无法直接求前缀和得到关系。关于数组某两个数的相同数量判断,我们一般可以运用+1-1最终为零的方式,同样这道题的前缀和也可以通过该方式(遇到0 -1,遇到1 +1),如果某个子数组符合相同数量,那原创 2021-06-03 18:07:30 · 52 阅读 · 0 评论 -
同余定理+前缀和+状态压缩 == 解决连续子数组问题
文章目录题目解题分析dfs爆搜(超时)数组前缀和最终的状态压缩(压缩用于存储前缀和的数组)版本题目解题分析同余定理:如果两个整数m、n满足n-m能被k整除,那么n和m对k同余即 ( pre(j) - pre (i) ) % k == 0 则 pre(j) % k == pre(i) % k推导 => pre (i) % k = (a0 + a1 + ... + ai) % k = (a0 % k + a1 % k + ... ai % k ) % k(该推导在简化前缀和的时候有原创 2021-06-02 12:46:43 · 317 阅读 · 0 评论 -
路径总和III---双dfs/哈希表记录二叉树前缀和
文章目录题目题目解析解题代码题目OJ平台题目解析关于深搜方式:我们由于是要找路径,我们直接通过一个dfs用于求路径总和,而另一个递归用于枚举所有的起点(根节点)。关于前缀和方式:一般来说二叉树的前缀和用哈希表记录下来,为了确保记录的是同一条路径下的前缀和,所以需要对它进行回溯处理,也就是在求完这条路径后把它对应的哈希表的值进行 -- 。解题代码双深搜/** * Definition for a binary tree node. * struct TreeNode { *原创 2021-09-28 09:42:03 · 247 阅读 · 0 评论 -
牛客-数学考试——同时维护两个k区间的前缀和
文章目录题目题目解析解题代码题目题目连接题目解析总结下上面说的两点:需要同时找两个的原因。如何优化到O(n)级别。解题代码#include<bits/stdc++.h>using namespace std;using ll = long long;ll dp[200005];int main(){ int t,n,k; ios::sync_with_stdio(false); cin>>t; while(t--){原创 2022-01-13 21:47:00 · 189 阅读 · 0 评论 -
牛客前缀和两题-储物点的距离、张经理的员工
文章目录题目一:储物点的距离题目详解解题代码题目二:张经理的员工题目详解解题代码题目一:储物点的距离题目链接题目详解这是一个前缀和分解过程的问题。由于结果是要取模的!所以代码里面没有一个%mod是无辜的,少一个就直接出错!具体的操作过程如下:解题代码#include "bits/stdc++.h"#define MAXN 200005using namespace std;using ll = long long;const int mod = 1000000007;int原创 2022-01-17 19:43:05 · 429 阅读 · 0 评论 -
牛客-[NOIP2012]借教室——差分数组的运用
文章目录题目解题分析解题代码题目题目链接解题分析本题是差分数组的运用。(当然写线段树如喝水一般自然的dalao,那肯定不屑于用这个方式)此题的做题思路:首先将订单的操作用差分数组存下,而后根据差分数组的性质,可以通过加和的方式得到每一天所需要的教书数量,如果超出所能供给的教室数量,则进行撤销操作,所以在更新差分数组的时候,我们还需要把每次更新的三个数据存下以便于撤销数据。撤销操作从后往前进行,撤销直到所需的教室数量不超过可供给的教室数量,故最后根据撤销的第几个后不出现超出的情况,则被撤销的这个原创 2022-01-16 20:21:43 · 243 阅读 · 0 评论