2024年华为OD机试真题-计算面积

华为OD机试真题-计算面积-2024年OD统一考试(D卷)

题目描述:

绘图机器的绘图笔初始位置在原点(0, 0),机器启动后其绘图笔按下面规则绘制直线:

1)尝试沿着横向坐标轴正向绘制直线,直到给定的终点值E。

2)期间可通过指令在纵坐标轴方向进行偏移,并同时绘制直线,偏移后按规则1 绘制直线;指令的格式为X offsetY,表示在横坐标X 沿纵坐标方向偏移,offsetY为正数表示正向偏移,为负数表示负向偏移。

给定了横坐标终点值E、以及若干条绘制指令,请计算绘制的直线和横坐标轴、以及 X=E 的直线组成图形的面积。

输入描述:

首行为两个整数 N E,表示有N条指令,机器运行的横坐标终点值E。

接下来N行,每行两个整数表示一条绘制指令X offsetY,用例保证横坐标X以递增排序方式出现,且不会出现相同横坐标X。

取值范围:0 < N <= 10000, 0 <= X <= E <=20000, -10000 <= offsetY <= 10000。

输出描述:

一个整数,表示计算得到的面积,用例保证,结果范围在0~4294967295内

补充说明:

示例1

输入:

4 10
1 1
2 1
3 1
4 -2

输出:

12

示例2

输入:

2 4
0 1
2 -2

输出:

4

解题思路:

这题每一步都告诉你在横坐标x处y偏移多少,我们只需要每次读取到x和y的时候,记录一下上一个x即x_old到现在的x即x_new之间的面积即可,要注意的是,y可能为负数,所以要取绝对值。在记录一次答案后,记得更新x_old和y,最后统计一下最后出现的x到中间这段距离的面积即可。

Java解法:

import java.util.Scanner;
 
 
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int e = scanner.nextInt();
        int[][] nums = new int[n + 1][2];
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < 2; j++) {
                nums[i][j] = scanner.nextInt();
            }
        }
        int[] height = new int[n];
        for (int i = 0; i

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

华为OD机试题库2024年 文章被收录于专栏

2024年OD统一考试(D卷),最新最完整题库。 收录130+道真题,提供解题思路,Java/Python/C++三种答案源码。

全部评论

相关推荐

4 7 评论
分享
牛客网
牛客企业服务