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++三种答案源码。