华为OD机试 - 计算面积 - 逻辑分析(Java 2023 B卷 100分)

2023-09-17 18:25:22

在这里插入图片描述

华为OD机试 2023B卷题库疯狂收录中,刷题点这里

专栏导读

本专栏收录于《华为OD机试(JAVA)真题(A卷+B卷)》

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。

一、题目描述

绘图机器的绘图笔初始位置在原点(0,0)。

机器启动后,其绘图笔按下面规则绘制直线:

  1. 尝试沿着横向坐标轴正向绘制直线,直到给定的终点值E;
  2. 期间可通过指令在纵坐标方向进行偏移,并同时绘制直线,偏移后按规则1绘制直线;
  3. 指令的格式为X offsetY。表示在横坐标X沿纵坐标方向偏移offsetY,offsetY为正整数,表示正向偏移,为负数,表示负向偏移。

给定了横坐标终点值E,以及若干条绘制指令。

请计算绘制的直线和横坐标轴,以及X-E的直线组成图形的面积。

二、输入描述

第一行输入两个正整数N、E。

  • N表示多少条指令;
  • E表示横坐标终点值;

接下来的N行输入两个正整数,表示指令X offsetY。

用例保证横坐标X以递增排序方式出现,且不会出现相同横坐标。

取值范围:

  • 0<N<=10000
  • 0<X<=E<=20000
  • -10000<=offsetY<=10000

三、输出描述

一个整数,表示计算得到的面积。

四、解题思路

  1. 第一行输入两个正整数N、E;
  2. 接下来的N行输入两个正整数,表示指令X offsetY;
  3. X轴坐标 * Y轴坐标计算面积;
  4. 叠加Y轴偏移量;
  5. 重置横坐标X;
  6. 叠加面积(横坐标终点值 - 当前横坐标) * Y轴坐标;
  7. 输出计算得到的面积。

五、Java算法源码

package com.guor.od;

import java.util.*;

public class OdTest {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int[] arr = Arrays.stream(sc.nextLine().split(" ")).mapToInt(Integer::parseInt).toArray();
        // 多少条指令
        int N = arr[0];
        // 横坐标终点值
        int E = arr[1];
        int area = 0;
        // X轴偏移量
        int xSkew = 0;
        // Y轴偏移量
        int ySkew = 0;
        // 接下来的N行输入两个正整数,表示指令X offsetY。
        for (int i = 0; i < N; ++i) {
            // 指令X offsetY
            String[] commands = sc.nextLine().split(" ");
            // 横坐标X
            int X = Integer.parseInt(commands[0]);
            // X轴坐标 * Y轴坐标计算面积
            area += Math.abs(ySkew) * (X - xSkew);
            // 叠加Y轴偏移量
            ySkew += Integer.parseInt(commands[1]);
            // 重置横坐标X
            xSkew = X;
        }
        // 叠加面积(横坐标终点值 - 当前横坐标) * Y轴坐标
        area += (E - xSkew) * ySkew;
        System.out.println(area);
    }
}

六、效果展示

1、输入

5 8
1 1
2 2
3 -1
4 -2
5 1

2、输出

9

3、说明

在这里插入图片描述

在这里插入图片描述


🏆下一篇:华为OD机试 - 荒岛求生 - 栈Stack(Java 2023 B卷 100分)

🏆本文收录于,华为OD机试(JAVA)真题(A卷+B卷)

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。

在这里插入图片描述

更多推荐

【Python】pyecharts 模块 ⑥ ( 绘制柱状图 | pyecharts 绘制柱状图步骤 | 柱状图 x 轴 / y 轴 翻转 | 柱状图数据标签位置设置 )

文章目录一、pyecharts绘制基础柱状图1、pyecharts绘制柱状图步骤2、代码示例-pyecharts绘制柱状图二、柱状图其它设置1、柱状图x轴/y轴翻转2、柱状图数据标签位置设置pyecharts画廊网站:https://gallery.pyecharts.org/#/在该网站可查看官方示例一、pyecha

关于Allegro17.4 3d模型大小不匹配问题解决

文章目录问题概述问题原因解决办法问题概述Allegro17.4版本采用3DCanvas工具进行3D模型的映射,映射后,无需保存任何映射文件,只要指定好step文件路径,即可将模型映射信息保存在pcb封装文件中,方便快捷。映射流程如下:打开Allegro软件,菜单选择Setup->UserPreferencesEdito

基于Java+SpringBoot+Vue的在线音乐网站设计和实现

基于Java+SpringBoot+Vue的在线音乐网站设计和实现源码传送入口前言主要技术系统设计功能截图数据库设计代码论文目录订阅经典源码专栏Java项目精品实战案例《500套》源码获取源码传送入口前言大数据时代下,数据呈爆炸式地增长。为了迎合信息化时代的潮流和信息化安全的要求,利用互联网服务于其他行业,促进生产,已

介绍Spring Security框架,以及如何使用它实现应用程序的安全性

文章目录什么是SpringSecurity?SpringSecurity的工作原理如何使用SpringSecurity构建安全的应用程序步骤1:添加SpringSecurity依赖步骤2:配置SpringSecurity步骤3:配置安全性规则步骤4:创建用户和角色步骤5:创建自定义登录页面步骤6:运行应用程序总结🎈个

又一职业技术技能标准官宣!

为贯彻落实《关于深化人才发展体制机制改革的意见》,推动实施人才强国战略,促进专业技术人员提升职业素养、补充新知识新技能,实现人力资源深度开发,推动经济社会全面发展,根据《中华人民共和国劳动法》有关规定,工业和信息化部教育与考试中心联合有关部门组织并制定了《研发效能(DevOps)工程师国家职业技术认证》。其中包含两个方

美团笔试-小美的元素删除

小美的元素删除小美有一个数组,她希望删除k个元素,使得剩余的元素两两之间互为倍数关系。你能告诉小美有多少种删除方案吗?由于答案过大,请对10^9+7模。输入描述第一行输入两个整数n,k(1<=k<=n<=10^3)表示数组长度,删除的元素数量。第二行输入n,k个整数表示数组a(1<=ai<=10^9)。保证给定的数组中

Prometheus PromQL数据查询语言

PromQL简介PromQL(PrometheusQueryLanguage)是Prometheus内置的数据查询语言。支持用户进行实时的数据查询及聚合操作。Prometheus基于指标名称(metricsname)以及附属的标签集(labelset)唯一定义一条时间序列指标名称代表着监控目标上某类可测量属性的基本特征

C#中string类型是引用类型

.Net框架程序设计(修订版)中有这样一段描述:String类型直接继承自Object,这使得它成为一个引用类型,也就是说线程上的堆栈上不会驻留有任何字符串。名称CTS类型说明stringSystem.StringUnicode字符串stringstr1="hello";stringstr2="world";这是一个值

数据分析:利用gpt进行归因分析

prompt:你是某电商平台的一名数据分析师,发现昨日的GMV环比下降了5%,请对这数据变动做出归因。output:在电商行业中,GMV(总销售额)是一个非常重要的指标,用于衡量业务的整体健康状况。当GMV出现环比下降时,这通常意味着需要进行详细的分析以找出可能的原因。以下是一些可能导致GMV环比下降5%的因素,以及如

50行Python代码实现代理服务器的详细教程

代理服务器是一种位于客户端与目标服务器之间的中间服务器,它可以代表客户端发送请求,并将响应返回给客户端。通过搭建自己的代理服务器,我们可以实现请求的拦截、修改和转发等功能。本文将为大家介绍如何使用50行Python代码实现代理服务器。一、准备工作在开始之前,我们需要确保已经安装了以下库:socket:用于创建套接字和网

Canal 实现MySQL与Elasticsearch7数据同步

1工作原理canal模拟MySQLslave的交互协议,伪装自己为MySQLslave,向MySQLmaster发送dump协议MySQLmaster收到dump请求,开始推送binarylog给slave(即canal)canal解析binarylog对象(原始为byte流)优点:可以完全和业务代码解耦,增量日志订阅

热文推荐