敌兵布阵问题

article/2025/10/13 12:43:17

一 问题描述

A 国在海岸线沿直线部署了 N 个工兵营地,C 国通过先进的监测手段,对 A 国的每个工兵营里的人数都掌握的一清二楚,每个工兵营的人数都可能发生变动,可能增加或减少若干人数。

二 输入和输出

1 输入

第 1 行包含一个整数,T 表示有 T 组数据。每组数据的第 1 行都包含一个正整数,N 表示 N 个工兵营地。接下来的 N 个正数数,第 i 个正数数 ai 代表第 i 个工兵营地开始时有 ai 个人,在接下来的每行都有 1 条命令,每组数据最多有40000 条命令。命令有四种形式。

Add i j:第 i 个营地增加 j 个人

Sub i j:第 i 个营地减少 j 个人

Query i j:查询第 i ~ j 个营地的总人数

End:退出

2 输出

对第 i 组数据,首先单行输出 Case i,然后对每个 Query 都单行输出查询区间的总人数。

三 输入和输出样例

1 输入样例

1
10
1 2 3 4 5 6 7 8 9 10
Query 1 3
Add 3 6
Query 2 7
Sub 10 2
Add 6 3
Query 3 10
End

2 输出样例

Case 1:
6
33
59

四 分析和设计

1 分析

本问题包含点更新和区间查询,可以采用树状数组或者线段树解决。

2 算法设计

a 创建线段树存储区间和。

b 点更新,查询到该点后进行点更新,返回时更新区间和。

c 区间查询,首先查找该区间,然后返回区间和值。

五 代码

package com.platform.modules.alg.alglib.hdu1166;public class Hdu1166 {public String output = "";private final int maxn = 55555;private int a[] = new int[maxn];private int sum[] = new int[maxn << 2];// 更新和值void PushUP(int rt) {sum[rt] = sum[rt << 1] + sum[rt << 1 | 1];}// 构建线段树void build(int l, int r, int rt) {if (l == r) {sum[rt] = a[l];return;}int m = (l + r) >> 1;build(l, m, rt << 1);build(m + 1, r, rt << 1 | 1);PushUP(rt);}// 单点更新void update(int p, int add, int l, int r, int rt) {if (l == r) {sum[rt] += add;return;}int m = (l + r) >> 1;if (p <= m) update(p, add, l, m, rt << 1);else update(p, add, m + 1, r, rt << 1 | 1);PushUP(rt);}// 区间查询int query(int L, int R, int l, int r, int rt) {if (L == l && r == R)//判断条件为相等return sum[rt];int m = (l + r) >> 1;if (R <= m)return query(L, R, l, m, rt << 1);else if (L > m)return query(L, R, m + 1, r, rt << 1 | 1);else return query(L, m, l, m, rt << 1) + query(m + 1, R, m + 1, r, rt << 1 | 1);}public String cal(String input) {int n;String[] line = input.split("\n");n = Integer.parseInt(line[0]); // 10String[] nums = line[1].split(" ");for (int x = 1; x <= n; x++)a[x] = Integer.parseInt(nums[x - 1]);build(1, n, 1);int count = 2;while (true) {String[] command = line[count++].split(" ");if (command[0].equals("End")) break;int i = Integer.parseInt(command[1]);int j = Integer.parseInt(command[2]);if (command[0].equals("Query")) {output += query(i, j, 1, n, 1) + "\n";} else if (command[0].equals("Sub")) {update(i, -j, 1, n, 1);} else {update(i, j, 1, n, 1);}}return output;}
}

六 测试

 


http://chatgpt.dhexx.cn/article/HhIClD6O.shtml

相关文章

红蓝对抗-红队打点的那些事

红蓝对抗-红队打点的那些事 攻防演练中作为攻击方&#xff0c;效率很重要&#xff0c;例如2019 BCS红队行动议题&#xff1a; RedTeam-BCS 半自动化的资产收集 域名/IP/需要交互的系统 当拿到目标的时候&#xff0c;首先需要利用天眼查获取目标企业结构&#xff0c;有子公司…

如何快速搭建红队练习靶场

使用项目:Vulhub Vulhub是一个基于docker和docker-compose的漏洞环境集合,进入对应目录并执行一条语句即可启动一个全新的漏洞环境,让漏洞复现变得更加简单,让安全研究者更加专注于漏洞原理本身。 前期准备 安装docker curl -s https://get.docker.com/ | sh

UGC、PGC、OGC比较详解

UGC、OGC 和 PGC &#xff0c;是网络平台上三种常见的内容生产模式&#xff0c;本文主要对其差别进行比较。 UGC模式 UGC&#xff08;全称为 User Generated Content&#xff0c;即用户输出内容&#xff09; 主要是通过激励用户生产内容&#xff0c;形成社区氛围。 UGC模式…

【学习心得】OGC城市地理标记语言(CityGML)编码标准_CityGML一般性特征

CityGML概述 CityGML是一种基于XML格式的、用于存储和交换虚拟3D城市模型的开放数据模型。它是地理标记语言3.1.1版 本(GML3)的一个应用模式&#xff0c;是由OGC和ISO TC211发布的用于空间数据交换的可扩展国际标准 开发CityGML的目标是为了对三维城市模型的基本实体、属性和…

UGC、PGC、OGC概念、例子和关联和区别

https://www.jianshu.com/p/c02881007758 概念&例子&#xff1a; UGC: User-generated Content 用户生产内容。是指用户将自己原创的内容通过互联网进行展示或者给其他用户。它是一种以Web2.0概念而新兴的方式&#xff0c;现在由原来的以下载为主变成下载和上传并重。 …

基于OGC标准的地图服务

基于OGC标准的地图服务 前言 目前在一家公司做前端开发&#xff0c;公司主要产品是可视化大屏&#xff0c;对前端开发而言&#xff0c;可视化大屏开发中地图是一个重点难点&#xff0c;在公司的项目中经常会用到amap、mapbox、openlayers等前端地图框架&#xff0c;刚开始上手对…

OGC与GIS

I. OGC 与OGC标准 OGC http://www.opengeospatial.org/ OGC全称Open Geospatial Consortium&#xff0c;自称是一个非盈利的、国际化的、自愿协商的标准化组织&#xff0c;它的主要目的就是制定与空间信息、基于位置服务相关的标准。这些标准就是OGC的“产品”&#xff0c;而…

OGC服务标准(地图资料篇.3)

听老人家说:多看美女会长寿 地图之家总目录(订阅之前建议先查看该博客) 一、OGC(开放地理空间信息联盟) OGC 全称是开放地理空间信息联盟(Open Geospatial Consortium),是一个非盈利的国际标准组织,它制定了数据和服务的一系列标准,GIS厂商按照这个标准进行开发可保证…

3.(地图资料篇)OGC服务标准

地图之家总目录(订阅之前请先查看该博客) 地图之家:cesium+leaflet+echart+地图数据+地图工具等相关内容的介绍 一、OGC(开放地理空间信息联盟) OGC 全称是开放地理空间信息联盟(Open Geospatial Consortium),是一个非盈利的国际标准组织,它制定了数据和服务的一系列…

解读OGC官方WMTS标准细节

之前有文章讲述了wmts服务的优点和好处,以及一些基本的原理,这篇文章我们从实际操作中来体验一下OGC定义的wmts的标准。 首先wmts服务是由服务端和客户端两部分组成,我们绝大多数人不必关心服务端,因为有服务端地图切片能力的公司和机构毕竟是少数。 我们重点在客户端加载…

OGC 网络数据服务的类型与操作+实现GeoServer软件在Apache+Tomcat的部署+OGC数据服务WMS、WFS和WCS的发布

目录 一、OGC网络数据服务的类型与操作 二、GeoServer在Apache Tomcat上的部署 三、OGC数据服务WMS、WFS和WCS的发布 一、OGC网络数据服务的类型与操作 1、OGC是什么&#xff1f; OGC——Open Geospatial Consortium——开放地理信息联盟&#xff0c;是一个非盈利的志愿的…

OGC WebGIS 常用服务标准(WMS/WMTS/TMS/WFS)速查

文章目录 0. 参数传递方式1. WMS 速查1.1. 能力1.2. 获取地图图片举例&#xff08;GetMap&#xff09;1.3. 在 CesiumJS 和 OpenLayers6 中使用 GeoServer WMS1.4. 获取要素信息 2. WMTS 速查2.1. 轴向2.2. 能力2.3. 示意图2.4. 请求瓦片举例&#xff08;GetTile&#xff09;2.…

UGC、PGC、OGC

1、ugc的意思 UGC &#xff0c;全称为User Generated Content&#xff0c;也就是用户生成内容&#xff0c;即用户原创内容。UGC的概念最早起源于互联网领域&#xff0c;即用户将自己原创的内容通过互联网平台进行展示或者提供给其他用户。UGC是伴随着以提倡个性化为主要特点的…

OGC标准介绍 1

I. OGC 与OGC标准 OGC http://www.opengeospatial.org/ OGC全称Open Geospatial Consortium&#xff0c;自称是一个非盈利的、国际化的、自愿协商的标准化组织&#xff0c;它的主要目的就是制定与空间信息、基于位置服务相关的标准。这些标准就是OGC的“产品”&#xff0c…

OGC标准介绍

数据共享作为GIS行业的基础,是每一位从事GIS相关领域人员必须要了解的知识,而OGC服务作为行业标准,已经被各大GIS厂商广泛应用。究竟什么是OGC呢? OGC全称——开放地理空间信息联盟(Open Geospatial Consortium), 它的主要目的就是制定与空间信息、基于位置服务相关的标准…

向量叉乘总结

向量叉乘的记忆比较模糊&#xff0c;现在推荐三种向量叉乘的记忆方法&#xff08;如下图所示&#xff09;&#xff1a; 1、向量的行列式展开法 2、轮换法&#xff08;右手定则的循环不变性&#xff09; 3、矩阵向量的乘法

向量的叉乘

向量的叉乘 a ^ b 高中数学中我们可以得到公式 a * b |a| * |b| * sin<a,b> 可以使用叉乘获取两个向量的左右位置&#xff0c;如下图所示 案例一&#xff08;案例中将y去掉&#xff0c;相当于俯视坐标系之后x&#xff0c;z&#xff09;&#xff1a; Vector3 a new Ve…

点乘与叉乘

0. 几何含义 0.1 点乘 点乘&#xff0c;又称向量的内积&#xff0c;结果为一个数&#xff0c;计算公式如下&#xff1a; 上述公式的推导过程如下&#xff1a; 因此&#xff0c;通过点乘可以得出两个向量之间的夹角&#xff0c;向量垂直时&#xff0c;点乘结果为0. 0.2 叉乘 …