【题集】一维前缀和-二维前缀和-数星星问题-反复运行时如何降低时间复杂度
目录
1前缀和
1.1一维前缀和
1.2二维前缀和
2.题目
2.1输入描述:
2.2输出描述:
2.3输入
2.4输出
3.题目理解
3.1思路
4.程序
4.1运行结果
1前缀和
1.1一维前缀和
1.2二维前缀和
求D=(A+B+C+D)-(A+B)-(A+C)+A
D=a[x2][y2]-a[x1-1][y2]-a[x2][y1-1]+a[x1-1][y1-1]
a[][]这里代表的是二维前缀和
for(int i=1;i<=n;i++){for(int j=1;j<=m;j++)a[i][j]+=a[i][j-1]+a[i-1][j]-a[i-1][j-1];
}
假如我想求a[2][4]的前缀和,我得先加上a[1][4]的前缀和,再加上a[2][3]的前缀和,然后这个时候我们发现实际上a[1][3]这个部分我们加了两遍,所以我们需要再减去一遍a[1][3],于是得出公式a[i][j]+=a[i][j-1]+a[i-1][j]-a[i-1][j-1]。
2.题目
一闪一闪亮晶晶,满天都是小星星,牛牛晚上闲来无聊,便躺在床上数星星。
牛牛把星星图看成一个平面,左上角为原点(坐标为(1, 1))。现在有n颗星星,他给每颗星星都标上坐标(xi,yi),表示这颗星星在第x行,第y列。
现在,牛牛想问你m个问题,给你两个点的坐标(a1, b1)(a2,b2),表示一个矩形的左上角的点坐标和右下角的点坐标,请问在这个矩形内有多少颗星星(边界上的点也算是矩形内)。
2.1输入描述:
第一行输入一个数字n(1≤n≤100000),表示星星的颗数。 接下来的n行,每行输入两个数xi和yi(1≤xi,yi≤1000),表示星星的位置。 然后输入一个数字m(1≤m≤100000), 表示牛牛询问问题的个数。 接下来m行,每行输入四个数字a1,b1,a2,b2(1≤a1<a2≤1000), (1≤b1<b2≤1000) 题目保证两颗星星不会存在于同一个位置。
2.2输出描述:
输出一共包含m行,每行表示与之对应的每个问题的答案。
2.3输入
4 1 1 2 2 3 3 1 3 4 1 1 2 2 1 1 3 3 2 2 3 3 1 2 2 3
2.4输出
2 4 2 2
3.题目理解
刚开始读题目的时候,我还以为是
但是阅读示例后,发现 并不是这个样子!
这个棋盘等于说是有空格地方,不是满的,我们需要对其进行统计
3.1思路
该怎么做这道题?
看了示例数据
第一行输入一个数字n(1≤n≤100000),表示星星的颗数。
接下来的n行,每行输入两个数xi和yi(1≤xi,yi≤1000),表示星星的位置。
然后输入一个数字m(1≤m≤100000), 表示牛牛询问问题的个数。
接下来m行,每行输入四个数字a1,b1,a2,b2(1≤a1<a2≤1000), (1≤b1<b2≤1000)
题目保证两颗星星不会存在于同一个位置。
4.程序
#include<iostream>
using namespace std;
int const N = 1000;
int a[N][N];
int flag[N][N];
int ans[100010];
int t;int main()
{int n, m, C;cout << "请您输入n的值:\n";cin >> n;int x1, y1, x2, y2, x, y;for (int i = 1; i <= n; i++){cout << "请输入x,y的值(示例 : 5 3)" << endl;cin >> x >> y;flag[x][y] = 1;}for (int i = 1; i < N; i++){for (int j = 1; j < N; j++){a[i][j] = a[i][j - 1] + a[i - 1][j] - a[i - 1][j - 1] + flag[i][j];}}cout << "请输入m的值:" << endl;cin >> m;for (int i = 1; i <= m; i++){cout << "请输入x1,y1,x2,y2的值(示例:1 1 3 3):" << endl;cin >> x1 >> y1 >> x2 >> y2;C = a[x2][y2] - a[x2][y1 - 1] - a[x1 - 1][y2] + a[x1 - 1][y1 - 1];ans[t++] = C;}for (int i = 0; i < t; i++){cout << ans[i] << endl;}return 0;
}
4.1运行结果
参考:
前缀和、二维前缀和与差分的小总结 (讲的不错)
二维前缀和详解
【题集】一维前缀和-二维前缀和-数星星问题-反复运行时如何降低时间复杂度相关推荐
- 部分和 前缀和 二维前缀和
引言 假设给你一个的存有成绩的数组scores[],要求从第a个到第b个的平均成绩.一个方法是将从第a个到第b个数据累加后除b-a+1即可,这种方法的循环次数最大能达到O(N),如果计算一次平均值就足 ...
- 【算法基础】一维前缀和 + 二维前缀和
- jzoj2137-(GDKOI2004)城市统计【二维前缀和,bfs】
正题 大意 有n*n的矩阵,有居民区有商业区,每个居民区曼哈顿距离最近的商业区的曼哈顿距离就是那个居民区离商业区的距离.每个格子统计一下以它为中心的2∗r+1×2∗r+12∗r+1×2∗r+12*r+ ...
- 暑假每日算法学习打卡(十)----[HNOI2003]激光炸弹,「土」秘法地震(二维前缀和),Captcha Cracker【牛客】
[HNOI2003]激光炸弹 题目描述 一种新型的激光炸弹,可以摧毁一个边长为R的正方形内的所有的目标. 现在地图上有n(N ≤ 10000)个目标,用整数Xi,Yi(其值在[0,5000])表示目 ...
- 一维前缀和与二维前缀和
前缀和 #一维前缀和: 1) 其实就是数列的前n项和,直接放代码:` sum[1]=a[1];for(int i=2;i<=n;i++)sum[i]=sum[i-1]+a[i];/*其实也可以不 ...
- 模版 ----- 一维前缀和与二维前缀和
一维前缀和 795. 前缀和 a[i] 的前 i 项和 s[i] 的递推公式:s[i]=s[i−1]+a[i]s[i] = s[i - 1] + a[i]s[i]=s[i−1]+a[i] 求出在 [l ...
- 一维前缀和,二维前缀和,一维差分,二维差分(翻译)
练习一道题目 输入一个长度为n的整数序列. 接下来再输入m个询问,每个询问输入一对l, r. 对于每个询问,输出原序列中从第l个数到第r个数的和. 输入格式 第一行包含两个整数n和m. 第二行包含n个 ...
- 一维矩阵和二维矩阵的前缀和
目录 一维数组的前缀和 二维矩阵的前缀和 前缀和技巧适用于快速.频繁地计算一个索引区间内的元素之和. 一维数组的前缀和 若求区域和的方法sumRange ()存在多次调用, 那么在求子区域元素之和时, ...
- 【算法】前缀和(一维前缀和与二维前缀和)
前缀和是一种重要的预处理,能大大降低查询的时间复杂度. [一维前缀和] 给定一个数组A[1,2,--n],则它的前缀和数组为PrefixSum[1..n].定义为:PrefixSum[i] = A[0 ...
最新文章
- 【ios】NSMutableArray initWithContentOfFile 得到nil后无法进行addObject的问题
- Qt Creator代码重构
- BZOJ 4706: B君的多边形 找规律
- 【Java多线程】线程优先级:优先级高,执行机会多
- js的数组和对象的多种复制和清空, 以及区分JS数组和对象的方法
- Bailian2798 2进制转化为16进制【进制】
- manacher算法学习(求最长回文子串长度)
- matlab将某点标红,Draw-a-rectangle-matlab 本程序在图像上指定位置话红色的矩形框作为标记 - 下载 - 搜珍网...
- php中paynotify,PayNotifyValidator.php
- 吴恩达机器学习 编程作业 python 版提交方法以及代码-week2
- linux zip分卷压缩解压命令
- 23种设计模式——UML类图+简要分析+例题
- docker安装wnameless/oracle-xe-11g并运行(手写超详细)
- 2022年全球市场机械蒸汽再压缩(MVR)总体规模、主要生产商、主要地区、产品和应用细分研究报告
- 汽车DC/DC简单介绍
- 如何优化棋牌游戏服务器网络带宽
- SCS【11】单细胞ATAC-seq 可视化分析 (Cicero)
- datawhale_爬虫_spider |第八期
- html自动适应wap,html5响应式/多彩小清新个人轻博客模板(自适应手机wap)
- linux ubuntu3d桌面,Ubuntu 3D桌面设置及效果欣赏[图文]
热门文章
- vb.net 教程 4-2 目录操作 DirectoryInfo 3
- wim linux u盘启动项,WinPE迷你系统中通过WimFltr组件挂载WIM镜像方法
- 国内最流行且免费的11个服务器监控工具
- 技术篇——使用 Junit 实现单元测试
- 浏览器自带的autocomplete默认样式是淡黄色的背景
- 教你怎么给心爱的她自动定时发送消息!超级简单!
- 《Web前端黑客技术揭 秘》解决部分示例无效的问题
- P1979 [NOIP2013 提高组] 华容道
- vue中轮播图一屏幕显示多张
- 计算机技术招聘常用网站,最新精品信息技术教师招聘常见考试题目