算法刷题day04

目录

  • 一、前缀和
  • 二、子矩阵的和
  • 三、激光炸弹
  • 四、K倍区间
  • 五、总结

一、前缀和

标签:前缀和

题目描述:

输入一个长度为 n 的整数序列。接下来再输入 m 个询问,每个询问输入一对 l,r。对于每个询问,输出原序列中从第 l 个数到第 r 个数的和。输入格式
第一行包含两个整数 n 和 m。第二行包含 n 个整数,表示整数数列。接下来 m 行,每行包含两个整数 l 和 r,表示一个询问的区间范围。输出格式
共 m 行,每行输出一个询问的结果。数据范围
1≤l≤r≤n,1≤n,m≤100000,−1000≤数列中元素的值≤1000
输入样例:
5 3
2 1 3 6 4
1 2
1 3
2 4
输出样例:
3
6
10

示例代码:

#include <cstdio>
#include <iostream>using namespace std;const int N = 1e6+10;int n, m;
int s[N];int main()
{scanf("%d%d", &n, &m);for(int i = 1; i <= n; ++i) {scanf("%d", &s[i]);s[i] += s[i-1];}while(m--){int l, r;scanf("%d%d", &l, &r);printf("%d\n", s[r] - s[l-1]);}return 0;
}

二、子矩阵的和

标签:前缀和

题目描述:

输入一个 n 行 m 列的整数矩阵,再输入 q 个询问,每个询问包含四个整数 x1,y1,x2,y2,表示一个子矩阵的左上角坐标和右下角坐标。对于每个询问输出子矩阵中所有数的和。输入格式
第一行包含三个整数 n,m,q。接下来 n 行,每行包含 m 个整数,表示整数矩阵。接下来 q 行,每行包含四个整数 x1,y1,x2,y2,表示一组询问。输出格式
共 q 行,每行输出一个询问的结果。数据范围
1≤n,m≤1000,1≤q≤200000,1≤x1≤x2≤n,1≤y1≤y2≤m,−1000≤矩阵内元素的值≤1000
输入样例:
3 4 3
1 7 2 4
3 6 2 8
2 1 2 3
1 1 2 2
2 1 3 4
1 3 3 4
输出样例:
17
27
21

示例代码:

#include <cstdio>
#include <iostream>using namespace std;const int N = 1010;int n, m, q;
int a[N][N], s[N][N];int main()
{scanf("%d%d%d", &n, &m, &q);for(int i = 1; i <= n; ++i){for(int j = 1; j <= m; ++j){scanf("%d", &a[i][j]);s[i][j] = a[i][j] + s[i-1][j] + s[i][j-1] - s[i-1][j-1];}}while(q--){int x1, y1, x2, y2;scanf("%d%d%d%d", &x1, &y1, &x2, &y2);printf("%d\n", s[x2][y2] - s[x2][y1-1] - s[x1-1][y2] + s[x1-1][y1-1]);}return 0;
}

三、激光炸弹

标签:前缀和

题目描述:

地图上有 N 个目标,用整数 Xi,Yi 表示目标在地图上的位置,每个目标都有一个价值 Wi。注意:不同目标可能在同一位置。现在有一种新型的激光炸弹,可以摧毁一个包含 R×R 个位置的正方形内的所有目标。激光炸弹的投放是通过卫星定位的,但其有一个缺点,就是其爆炸范围,即那个正方形的边必须和 x,y 轴平行。求一颗炸弹最多能炸掉地图上总价值为多少的目标。输入格式
第一行输入正整数 N 和 R,分别代表地图上的目标数目和正方形包含的横纵位置数量,数据用空格隔开。接下来 N 行,每行输入一组数据,每组数据包括三个整数 Xi,Yi,Wi,分别代表目标的 x 坐标,y 坐标和价值,数据用空格隔开。输出格式
输出一个正整数,代表一颗炸弹最多能炸掉地图上目标的总价值数目。数据范围
0≤R≤109
0<N≤10000,0≤Xi,Yi≤5000
0≤Wi≤1000
输入样例:
2 1
0 0 1
1 1 1
输出样例:
1

示例代码:

#include <cstdio>
#include <iostream>using namespace std;typedef long long LL;const int N = 5010;int n, m;
int s[N][N];int main()
{scanf("%d%d", &n, &m);m = min(5001, m);int maxx = m, maxy = m;while(n--){int x, y, w;scanf("%d%d%d", &x, &y, &w);x++, y++;maxx = max(maxx, x), maxy = max(maxy, y);s[x][y] += w;}for(int i = 1; i <= maxx; ++i){for(int j = 1; j <= maxy; ++j){s[i][j] = s[i][j] + s[i][j-1] + s[i-1][j] - s[i-1][j-1];}}int res = 0;//cout << m << endl;for(int i = m; i <= maxx; i ++){for(int j = m; j <= maxy; j ++){int t = s[i][j] - s[i][j-m] - s[i-m][j] + s[i-m][j-m];//printf("%d\n", res);res = max(t, res);}}// for(int i = 1; i <= 2; ++i)// {//     for(int j = 1; j <= 2; ++j)//     {//         printf("%d ", s[i][j]);//     }//     puts("");// }printf("%d\n", res);return 0;
}

四、K倍区间

标签:前缀和

题目描述:

给定一个长度为 N的数列,A1,A2,…AN
,如果其中一段连续的子序列 Ai,Ai+1,…Aj之和是 K的倍数,我们就称这个区间 [i,j]是 K倍区间。你能求出数列中总共有多少个 K倍区间吗?输入格式
第一行包含两个整数 N和 K
。以下 N行每行包含一个整数 Ai
。输出格式
输出一个整数,代表 K倍区间的数目。数据范围
1≤N,K≤100000
,
1≤Ai≤100000
输入样例:
5 2
1
2
3
4
5
输出样例:
6

示例代码:

#include <cstdio>
#include <iostream>using namespace std;typedef long long LL;const int N = 100010;int n, k;
LL s[N], cnt[N];int main()
{scanf("%d%d", &n, &k);for(int i = 1; i <= n; ++i) {scanf("%lld", &s[i]);s[i] += s[i-1];}LL res = 0;cnt[0] = 1;for(int i = 1; i <= n; ++i){res += cnt[s[i] % k];cnt[s[i]%k]++;}printf("%lld\n", res);return 0;
}

五、总结

  • 前缀和:计算区间大小l~r:s[r]-s[l-1],下标从1开始

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/665259.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

COX预测模型过程中,我踩过的那些雷

R语言做&#xff01;初学者先进来看看&#xff01;&#xff01;&#xff01; SCI冲 COX分析&#xff1a;做临床信息与预后相关的COX分析大致都会分为两个步骤&#xff0c;先做单因素COX回归分析&#xff0c;再根据P值挑选有意义的变量&#xff0c;最终纳入COX多因素回归模型中&…

20240202在WIN10下部署faster-whisper

20240202在WIN10下部署faster-whisper 2024/2/2 12:15 前提条件&#xff0c;可以通过技术手段上外网&#xff01;^_ 首先你要有一张NVIDIA的显卡&#xff0c;比如我用的PDD拼多多的二手GTX1080显卡。【并且极其可能是矿卡&#xff01;】800&#xffe5; 2、请正确安装好NVIDIA最…

SpringBoot实战项目第一天

环境搭建 后端部分需要准备&#xff1a; sql数据库 创建SpringBoot工程&#xff0c;引入对应的依赖(web\mybatis\mysql驱动) 配置文件application.yml中引入mybatis的配置信息 创建包结构&#xff0c;并准备实体类 完成今日开发后项目部分内容如下图示 用户注册于登录部分…

[BUUCTF]-PWN:mrctf2020_easy_equation解析

查看保护 再看ida 很明了&#xff0c;题目就是让我们用格式化字符串漏洞修改judge的值&#xff08;可以用python脚本进行计算&#xff0c;最终算出来得2&#xff09;使等式成立&#xff0c;然后getshell。 虽然操作比较简单&#xff0c;但我还是列出了几种方法 解法一&#x…

uni-app移动端图片预览组件 movable-area 、movable-view (支持缩放,拖动效果、替换部分代码图片可直接使用)

UniApp图片预览组件 利用uni-app官方<movable-area>、<movable-view>内置视图组件 配合 uView 组件的u-popup 弹框组件共同实现封装的图片预览组件&#xff0c;支持手指缩放、拖动效果&#xff0c;替换代码中部分图片后 可以直接使用。 效果图&#xff1a; 组件代码…

【数据结构与算法】——单链表的原理及C语言实现

数据结构与算法——链表原理及C语言实现 链表的原理链表的基本属性设计创建一个空链表链表的遍历&#xff08;显示数据&#xff09;释放链表内存空间 链表的基本操作设计&#xff08;增删改查&#xff09;链表插入节点链表删除节点链表查找节点增删改查测试程序 链表的复杂操作…

Vulnhub billu b0x

0x01 环境搭建 1. 从官方下载靶机环境&#xff0c;解压到本地&#xff0c;双击OVF文件直接导入到vmware虚拟机里面。2. 将虚拟机的网络适配器调成NAT模式&#xff0c;然后开机即可进行操作了。 0x02 主机发现 nmap -sn 192.168.2.0/24 成功获取靶机IP为192.168.2.129。 0x0…

本次安装Visual Studio 所用的安装程序不完整。请重新运行VisualStudio安装程序以解决此问题

今天点开VS的时候遇到了这个问题 因为昨天升级到一半电脑关机了&#xff0c;今天打开软件遇到如下错误&#xff0c; 解决办法很简单&#xff0c;找到安装目录进入Installer文件夹 我的目录在C:\Program Files (x86)\Microsoft Visual Studio\Installer 找到vs_installer.exe…

【python】python爱心代码

一、实现效果&#xff1a; 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 二、准备工作 &#xff08;1)、导入必要的模块&#xff1a; 代码首先导入了需要使用的模块&#xff1a;requests、lxml和csv。 import requests from lxml import etree import csv 如果出现…

查找单词-算法(深度优先)

题目 给定一个二维数组与一个单词&#xff0c;数组中每个元素为大写字母&#xff0c;判断单词是否出现在数组中。 如二维数组&#xff1a; char[][] map {{A, B, C, E}, {S, F, C, S}, {A, D, E, E}}; 目标单词&#xff1a; ABCCEE 解题 深度优先&#xff0c;并且走过的…

03哈希表:242、有效的字母异位词

242、有效的字母异位词 文章目录 242、有效的字母异位词方法一&#xff1a;暴力破解法方法二、 哈希法 重点&#xff1a;哈希可以用数组代替表示&#xff0c;下标用与a的位置绝对值 暴力破解法&#xff1a;两层for循环&#xff0c;同时记录字母次数哈希法&#xff1a;第一个字符…

C#写个小工具,把多个word文档进行合并成一个word文档

先要安装包 帮助类WordDocumentMerger&#xff0c;用于处理word合并功能 using System; using System.Collections.Generic; using System.Text; using Microsoft.Office.Interop.Word; using System.Reflection; using System.IO; using System.Diagnostics;namespace WordH…

分别用JavaScript,Java,PHP,C++实现桶排序的算法(附带源码)

桶排序是计数排序的升级版。它利用了函数的映射关系&#xff0c;高效与否的关键就在于这个映射函数的确定。为了使桶排序更加高效&#xff0c;我们需要做到这两点&#xff1a; 在额外空间充足的情况下&#xff0c;尽量增大桶的数量使用的映射函数能够将输入的 N 个数据均匀的分…

关闭windows系统的自动更新的6种方法 详细介绍

关闭Windows系统的自动更新可以通过多种方法实现&#xff0c;以下将详细介绍六种不同的方法。请注意&#xff0c;关闭自动更新可能会使您的系统面临安全风险&#xff0c;因为您将不会及时接收到最新的安全补丁和系统更新。在执行以下任何操作之前&#xff0c;请确保您了解潜在的…

多线程读写文件问题

多线程读写同个文件会不会有访问冲突或者异常&#xff1f;我们写个程序来测试一下 /*** Created by fangruibin* 测试多线程读写文件*/#include <iostream> #include <pthread.h> #include <unistd.h> #include <string.h>const char* fileName &quo…

【C语言】字符串函数介绍

目录 前言&#xff1a; 1. strlen 函数 函数介绍 strlen 函数的使用 strlen 函数的模拟实现 2. strcpy 函数 函数介绍 strcpy 函数的使用 strcpy 函数的模拟实现 3. strcat 函数 函数介绍 strcat 函数的使用 strcat 函数的模拟实现 4. strcmp 函数 函数介绍 st…

前端工程化之:webpack1-12(常用扩展)

目录 前言 一、CleanWebpackPlugin 二、HtmlWebpackPlugin 三、CopyPlugin 四、webpack-dev-server 五 、file-loader 六、url-loader 七、路径问题 前言 由于 webpack 、 webpack-cli 、 webpack-dev-server 会存在版本不兼容问题&#xff0c;所以这里使用的版本如下&…

4K Video Downloader forMac/win:畅享高清视频下载的终极利器!

在如今的数字时代&#xff0c;高清视频已经成为人们生活中不可或缺的一部分。无论是观看精彩的电影、音乐视频&#xff0c;还是学习教育类的在线课程&#xff0c;我们都希望能够以最清晰流畅的方式来欣赏。而为了满足这一需求&#xff0c;我们需要一款功能强大的高清视频下载软…

工业平板电脑定制_三防平板电脑安卓主板厂家

工业平板电脑具有IP68级三防品质&#xff0c;采用高强度工业材质制造&#xff0c;结构稳固坚韧&#xff0c;具备较高的抗冲击和防震能力。隔空减震技术进一步加强了产品的抗冲击和防震动功能。广泛应用于工控、医疗、电信、电力、工业自动化设备、汽车检测、制造业等多个领域&a…

Flink实时数仓同步:快照表实战详解

一、背景 在大数据领域&#xff0c;初始阶段业务数据通常被存储于关系型数据库&#xff0c;如MySQL。然而&#xff0c;为满足日常分析和报表等需求&#xff0c;大数据平台采用多种同步方式&#xff0c;以适应这些业务数据的不同存储需求。这些同步存储方式包括离线仓库和实时仓…