前缀和与差分
文章平均质量分 53
前缀和和差分的一些算法题目
清梦2020
计算机菜鸟一枚....
展开
-
123 2021年国赛 二分搜索+前缀和
主要是考察前缀和,我们将数组划分为若干个小区间,第i个区间是1,2,3....,i。最终的索引下标=前一个区间的索引+数num所在区间的距离第一个元素的偏移量。小蓝发现,这个数列前 1 项是整数 1,接下来 2 项是整数 1 至 2,接下来 3 项是整数 1 至 3,接下来 4 项是整数 1 至 4,依次类推。接下来 T 行,每行包含一组询问,其中第 i 行包含两个整数 l和 r,表示询问数列中第 l个数到第 r 个数的和。输入的第一行包含一个整数 T,表示询问的个数。的long数组大约为256mb。原创 2023-06-07 19:24:43 · 737 阅读 · 0 评论 -
LeetCode 可获得的最大点数 前缀和 滑动窗口
几张卡牌,每张卡牌都有一个对应的点数。点数由整数数组cardPoints给出。每次行动,你可以从行的开头或者末尾拿一张卡牌,最终你必须正好拿k张卡牌。你的点数就是你拿到手中的所有卡牌的点数之和。给你一个整数数组cardPoints和整数k,请你返回可以获得的最大点数。原创 2023-04-06 22:19:41 · 256 阅读 · 1 评论 -
Leetcode 拼车 差分数组
给定整数 capacity 和一个数组 trips , trip[i] = [numPassengersi, fromi, toi] 表示第 i 次旅行有 numPassengersi 乘客,接他们和放他们的位置分别是 fromi 和 toi。对于区间[i,j]都加m,差分数组只需要cf[i]+=m;当且仅当你可以在所有给定的行程中接送所有乘客时,返回 true,否则请返回 false。对于此题来说,只需要通过差分数组记录乘客数量,然后判断每一站乘客是否超过车辆的容量。原创 2023-04-06 17:18:22 · 290 阅读 · 0 评论 -
LeetCode 长度最小的子数组 前缀和 滑动窗口
找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0。这题很容易想到前缀和,但是找出最小长度的子数组需要用到二分来优化,不然会超时。给定一个含有 n 个正整数的数组和一个正整数 target。原创 2023-04-06 16:07:28 · 377 阅读 · 0 评论 -
洛谷 P3397 地毯 Java实现 二维差分
题目描述在 n×n 的格子上有 m 个地毯。给出这些地毯的信息,问每个点被多少个地毯覆盖。输入格式第一行,两个正整数 n,m。意义如题所述。接下来 mm 行,每行两个坐标 (x1,y1)和 (x2,y2),代表一块地毯,左上角是 (x1,y1),右下角是 (x2,y2)。输出格式输出 nn 行,每行 nn 个正整数。第 i 行第 j 列的正整数表示 (i,j) 这个格子被多少个地毯覆盖。思路:二维差分+二维前缀和(矩阵前缀和)AC代码:import java.io.BufferedR原创 2022-06-29 10:36:32 · 513 阅读 · 0 评论 -
最大子段和 三种方法线性dp、前缀和、贪心
给出一个长度为 n 的序列 a,选出其中连续且非空的一段使得这段和最大。输入格式第一行是一个整数,表示序列的长度 n。第二行有 n个整数,第 i 个整数表示序列的第 i个数字 a_i输出格式输出一行一个整数表示答案。很经典的题,我这里只写状态转移方程,提供思路防止以后忘记。 dp[i]为第i个位置的最大字段和。思路其实就是开始遍历每个元素,在取第i个元素的情况下,要不要加上之前最大的字段和。也就是加上前面的字段和会不会让当前的数更小,也就是前面的最大字段和是不是负数。如果前面的字段和是负数,那么等于的原创 2022-06-10 09:46:35 · 763 阅读 · 0 评论 -
洛谷 P2004 领地选择 Java实现 二维前缀和
题目描述作为在虚拟世界里统帅千军万马的领袖,小 Z 认为天时、地利、人和三者是缺一不可的,所以,谨慎地选择首都的位置对于小 Z 来说是非常重要的。首都被认为是一个占地 C\times CC×C 的正方形。小 Z 希望你寻找到一个合适的位置,使得首都所占领的位置的土地价值和最高。输入格式第一行三个整数 N,M,CN,M,C,表示地图的宽和长以及首都的边长。接下来 NN 行每行 MM 个整数,表示了地图上每个地块的价值。价值可能为负数。输出格式一行两个整数 X,YX,Y,表示首都左上角的坐标。原创 2022-05-09 16:37:43 · 291 阅读 · 2 评论 -
洛谷 P1719 最大加权矩形 Java实现 二维前缀和
题目描述为了更好的备战 NOIP2013,电脑组的几个女孩子 LYQ,ZSC,ZHQ 认为,我们不光需要机房,我们还需要运动,于是就决定找校长申请一块电脑组的课余运动场地,听说她们都是电脑组的高手,校长没有马上答应他们,而是先给她们出了一道数学题,并且告诉她们:你们能获得的运动场地的面积就是你们能找到的这个最大的数字。校长先给他们一个 N\times NN×N 矩阵。要求矩阵中最大加权矩形,即矩阵的每一个元素都有一权值,权值定义在整数集上。从中找一矩形,矩形大小无限制,是其中包含的所有元素的和最大 。矩原创 2022-05-09 16:24:44 · 454 阅读 · 0 评论 -
洛谷 P1115 最大子段和 Java实现 前缀和基础
题目描述给出一个长度为 n 的序列 a,选出其中连续且非空的一段使得这段和最大。输入格式第一行是一个整数,表示序列的长度 n。第二行有 n个整数,第 i 个整数表示序列的第 i个数字 a_i输出格式输出一行一个整数表示答案。题目详细:P1115 最大子段和import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.IOException;import java.io.InputStreamRe原创 2022-05-09 15:56:59 · 541 阅读 · 0 评论 -
洛谷 P5638 光骓者的荣耀 Java实现 前缀和入门
题目描述题目描述小 K 打下的江山一共有 n 个城市,城市 i 和城市 i+1 有一条双向高速公路连接,走这条路要耗费时间 a_i小 K 为了关心人民生活,决定定期进行走访。他每一次会从 1 号城市到 n 号城市并在经过的城市进行访问。其中终点必须为城市 n。不仅如此,他还有一个传送器,传送半径为 k,也就是可以传送到 i−k 和 i+k。如果目标城市编号小于 1 则为 1,大于 n 则为 n。但是他的传送器电量不足,只能传送一次,况且由于一些原因,他想尽量快的完成访问,于是就想问交通部部长您最快原创 2022-05-09 09:55:12 · 668 阅读 · 0 评论