【POJ No. 1195】 矩形区域查询 Mobile phones

news2024/10/6 10:33:40

【POJ No. 1195】 矩形区域查询 Mobile phones

北大 OJ 题目地址

在这里插入图片描述

【题意】

移动电话的基站区域分为多个正方形单元,形成S ×S 矩阵,行和列的编号为0~S -1,每个单元都包含一个基站。一个单元内活动手机的数量可能发生变化,因为手机从一个单元移动到另一个单元,或手机开机、关机。

编写程序,改变某个单元的活动手机数量,并查询给定矩形区域中当前活动手机的总数量。

【输入输出】

输入:

输入和输出均为整数。每个输入都占一行,包含一个指令和多个参数。所有值始终在以下数据范围内。

若A 为负,则可以假设它不会将值减小到零以下。

  • 表大小:1×1≤S ×S ≤1024×1024。
  • 单元值:0≤V ≤32767。
  • 更新量:-32768≤A ≤32767。
  • 输入中的指令数:3≤U ≤60002。
  • 整个表中的最大电话数:M =2^30 。

在这里插入图片描述

输出:

对指令2,单行输出矩形区域中当前活动手机的总数量。

【样例】

在这里插入图片描述

【思路分析】

这道题包括单点更新与矩形区间和查询,是非常简单的二维树状数组问题。

【算法设计】

直接采用二维树状数组进行点更新和矩阵区间和查询即可。

注意:本题坐标从0开始,树状数组下标必须从1开始,所以对输入下标做加1处理。

【算法实现】

#include<cstdio>
#include<cstring>
#define maxn 1050
#define lowbit(x) (x)&(-x)

int c[maxn][maxn],n;

void add(int x,int y,int z)//单点更新 
{
    for(int i=x;i<=n;i+=lowbit(i))
        for(int j=y;j<=n;j+=lowbit(j))
            c[i][j]+=z;
}

int sum(int x,int y)//区间和:左上角(1,1)到右下角(x,y)矩阵区间和 
{
    int s=0;
    for(int i=x;i>0;i-=lowbit(i))
        for(int j=y;j>0;j-=lowbit(j))
            s+=c[i][j];
    return s;
}

int sum(int x1,int y1,int x2,int y2)//求左上角(x1,y1)到右下角(x2,y2)子矩阵区间和 
{
	return sum(x2,y2)-sum(x1-1,y2)-sum(x2,y1-1)+sum(x1-1,y1-1);
}

int main()
{
    int opt,x,y,a,l,b,r,t;
	while(scanf("%d",&opt)!=EOF)
	{
		if(opt==3) break;
		if(opt==0)
		{
			scanf("%d",&n);
    		memset(c,0,sizeof(c));
		}
		else if(opt==1)
		{
            scanf("%d%d%d",&x,&y,&a);
            ++x;++y;
            add(x,y,a);
        }
        else
		{
            scanf("%d%d%d%d",&l,&b,&r,&t);
            ++l,++b,++r,++t;
            printf("%d\n",sum(l,b,r,t));
        }
	}
    return 0;
}

在这里插入图片描述

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

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

相关文章

[附源码]Python计算机毕业设计Django大学生考勤管理系统论文

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

区块链存储优化——从MPT树到KV存储

MPT树存储的优缺点 区块链如果采用MPT树存储&#xff0c;大概会有以下优点&#xff1a; 可用全局数据的根哈希做共识&#xff0c;数据篡改会被立即发现&#xff1b;可以查询任意历史区块对应时刻的所有数据&#xff1b;方便从指定区块开始同步数据&#xff0c;因为正如上面所…

Codeforces Round #790 (Div. 4) G. White-Black Balanced Subtrees 感觉很好的树形dp的板子题

翻译&#xff1a; 您得到一个有根的树&#xff0c;其中包含从1到&#x1d45b;编号为&#x1d45b;的顶点。根结点是顶点1。还有一个字符串&#x1d460;表示每个顶点的颜色:如果&#x1d460;&#x1d456;&#x1d671;&#xff0c;那么顶点&#x1d456;是黑色的&#xff0…

MongoDB实战:应用场景以及Spring和mongodb的整合

前言 mongodb是非关系型数据库&#xff0c;他的存储数据可以超过上亿条&#xff08;老版本的mongodb有丢数据的情况&#xff0c;新版本不会有&#xff0c;网上说的&#xff09;&#xff0c;mongodb适合存储 一些量大表关系较简单的数据&#xff0c;例如用户信息&#xff0c;用户…

linux 多台机器修改时间同步

修改东八区 首先第一步&#xff0c;通过命令 &#xff1a;date -R 查看当前系统所在时区。如是0800&#xff0c;则是东八区&#xff0c;也就是我们当下的北京时间&#xff0c;如不是&#xff08;如下图&#xff09;&#xff0c;做如下调整。 命令行键入命令&#xff1a;tzsele…

认识与了解前端Dom

Dom 文档对象模型 Dom是关于创建&#xff0c;修改&#xff0c;插入&#xff0c;删除页面元素的标准 Dom赋予我们操作操作页面的能力 页面的内容都是字符串&#xff0c;js会把这些字符串转换成DOM树&#xff0c;DOM树会把字符串转换成节点&#xff0c;其实我们操作DOM的根本就…

CSS布局的三种方式

绝对定位 绝对定位&#xff1a; ​ 属性&#xff1a;position 值&#xff1a;absolute <style> p.abs{position: absolute;left: 150px;top: 50px; }</style><p >正常文字1</p> <p >正常文字2</p> <p class"abs" >绝对定…

Postman常用断言功能解析

一、Postman断言模块 二、七种常规业务断言 前4种最常用&#xff1a; 1&#xff09;Status code:Code is 200 检查返回的状态码是否为200 2&#xff09;Response body:Contains string 检查响应中包括指定字符串 3&#xff09;Response body:Json value check 检查响应中其中js…

C++ Reference: Standard C++ Library reference: Containers: list: list: cbegin

C官网参考链接&#xff1a;https://cplusplus.com/reference/list/list/cbegin/ 公有成员函数 <list> std::list::cbegin const_iterator cbegin() const noexcept; 返回开始的常量迭代器 返回指向容器第一个元素的const_iterator对象。 const_iterator是指向const内容…

不用ps也能在线设计电商详情页的方法

食品类的商品要如何设计排版详情页呢&#xff1f;怎么样排版食品类商品的详情页才好看&#xff1f;想设计一张好看食品的详情页其实是有方法的&#xff0c;下面跟着小编学习如何使用在线工具乔拓云&#xff0c;在线设计一个食品商品的详情页&#xff0c;还有海量的商品详情页模…

mysql索引类别和失效场景

首先&#xff0c;我们为什么要使用索引&#xff0c;索引有什么作用呢&#xff1f; 索引可以用来快速查询数据表中有某一特定值的记录&#xff0c;大大加快数据的查询速度&#xff1b;在列上创建了索引之后&#xff0c;查找数据时可以直接根据该列上的索引找到对应记录行的位置…

经典文献阅读之--PL-SLAM(点线SLAM)

0. 简介 之前作者基本都在围绕着特征点提取的路径在学习&#xff0c;最近看到了最近点云PCL推送的《Structure PLP-SLAM: Efficient Sparse Mapping and Localization using Point, Line and Plane for Monocular, RGB-D and Stereo Cameras》。这个工作是基于OpenVSLAM架构的…

测评 | 基于AM5708开发板——AM5708 SOC使用uboot更新uboot

本次测评板卡是创龙科技旗下的TL570x-EVM,它是一款基于TI Sitara系列AM5708ARM Cortex-A15+浮点DSPC66x处理器设计的异构多核SOC评估板,由核心板和评估底板组成。核心板经过专业的PCB Layout和高低温测试验证,稳定可靠,可满足各种工业应用环境。 评估板接口资源丰富,引出…

学苑教育杂志学苑教育杂志社学苑教育编辑部2022年第32期目录

前沿 学苑简讯《学苑教育》投稿&#xff1a;cn7kantougao163.com 4-6 专题研究 把握有效生成 焕发课堂魅力——小学语文课堂有效动态生成策略探析 任云青; 7-811 教育管理 新课程理念下高中契约式班级管理研究 孙磊; 9-11 小学班级管理中文明礼仪教育实施策略的…

Ubuntu 20.04 上学习Open vSwitch :VxLAN

参考 OpenvSwitch完全使用手册 云计算底层技术-使用openvswitch Open vSwitch 概述&#xff1b;OVS支持的功能&#xff1b;ovs的模块介绍&#xff08;ovs-vswitchd、ovsdb-server等等 学习环境 学习 OpenStack 2 个 Hyper-V 虚拟机 Ubuntu 20.04 203.0.113.101 /24 ( 网关&a…

Git——入门介绍

目录1.Git概述1.1.版本控制1.2.版本控制工具1.2.1集中式版本控制工具1.2.2分布式版本控制工具1.3.Git 工作机制1.4.Git 和代码托管中心2.Git下载安装2.1.Git下载2.2.Git安装3.Git常用命令3.1.设置用户签名3.2.初始化本地库3.3.查看本地库状态3.4.添加暂存区3.5.提交本地库3.6.修…

6、python的高级特性(生成式、生成器、闭包、装饰器)

文章目录生成式列表生成式字典生成式集合生成式生成器生成器的实现方式将生成式改写成生成器。将[ ] 改成 ( )使用yield关键字闭包装饰器生成式 列表生成式 在“先有一个空列表&#xff0c;然后通过循环依次将元素添加到列表中”的场景&#xff0c;可以使用列表生成式。 列表…

核心解读 - 2022版智慧城市数字孪生标准化白皮书

核心解读 - 2022版智慧城市数字孪生标准化白皮书前言&#xff1a;城市数字孪生基本概念一、城市数字孪生概述1、城市数字孪生内涵及概念模型2、城市数字孪生典型特征3、城市数字孪生相关方4、城市数字孪生技术参考架构5、城市数字孪生关键技术二、智慧城市数字孪生发展现状1、政…

JMeter下载及安装配置教程

参考&#xff1a;入门部署教程 – Jmeter中文网 本文是在win10环境下安装使用jmeter&#xff0c;jmeter可以运行在多平台上Windows和Linux。 环境准备&#xff1a; java 8 jmeter 5.1.1 jmeter环境 jmeter环境依赖JAVA环境&#xff0c;需安装JDK1.8环境&#xff0c;JDK下载地…

基于若依springboot二次开发WMS带移动端管理系统vue源码

系统是前后端分离的架构&#xff0c;前端使用Vue2&#xff0c;后端使用SpringBoot2。搭建部署的方式也是挺简单的&#xff0c;还带有uniapp开发的多端移动端扫码入库功能 技术架构 技术框架&#xff1a;SpringBoot2.0.0 Mybatis1.3.2 Shiro swagger-ui jpa lombok Vue2 …