【代码+图解+解析】校门外的树

文章目录

      • 问题描述
      • 输入格式
      • 输出格式
      • 输出要求
      • 输入样例
      • 输出样例
      • 解题思路
      • 图示
      • Java代码
      • C代码
      • C++代码
      • Java代码输出结果

问题描述

某校大门外长度为 L的马路上有一排树,每两棵相邻的树之间的间隔都是 1米。我们可以把马路看成一个数轴,马路的一端在数轴 0 的位置,另一端在 L 的位置;数轴上的每个整数点,即 0,1,2,…,L,都种有一棵树。

由于马路上有一些区域要用来建地铁。这些区域用它们在数轴上的起始点和终止点表示。已知任一区域的起始点和终止点的坐标都是整数,区域之间可能有重合的部分。现在要把这些区域中的树(包括区域端点处的两棵树)移走。你的任务是计算将这些树都移走后,马路上还有多少棵树。

输入格式

第一行有两个整数,分别表示马路的长度 L和区域的数目 m。

接下来 m 行,每行两个整数 u,v,表示一个区域的起始点和终止点的坐标。

输出格式

输出一行一个整数,表示将这些树都移走后,马路上剩余的树木数量。

输出要求

输出包括一行,这一行只包含一个整数,表示马路上剩余树的数目。

输入样例

500  3
150  300
100  200
470  471

输出样例

298

解题思路

我们先把题目的意思搞明白,这里可以用 “模拟法” 来解决问题,而其基本思想是对事物进行抽象,将现实世界的事物映射成计算机所能识别的代码符号。具体的问题具体分析,这里是 “校门外的树” ,那么我们把这个题目描述的现实具体的“移树”问题进行抽象,变成数学符号以及代码符号来理解。

现实世界 ->抽象世界

  • 数学思想

在一个数轴上,对指定区间 [0,L] 上的整数点进行取值,假设数轴上所有点的权为0 或 false,现给出几个 已知的 [u,v]小区间,要求把这几个小区间中的整数点(包括两个端点)的权更改为 1 或 true。最后统计数轴 [0,L] 上还有几个 权等于0 的点的个数,记为 num。 求出num的值

NOTE : 这里为什么选择赋值的方式来进行对树移或者未移进行标记? 因为现实生活中,我们给出的几个区间是会出现交集的部分,但是我们却不能把移走的树的位置再进行移动一遍,所以我们只需要把已经移走的树的位置进行标记,这个标记肯定选择一个相同的值最好,因为最后我们使用if语句数留下来的树的数目的时候只用写一个判断条件,就可以直接判断出树的状态。

  • 编程思想

使用模拟法对题目进行抽象,通过在数轴上进行取值的方式进行标记,最后统计剩余树的个数。

  1. 数据结构的选择

    可以考虑使用一个数组或列表来表示数轴上的点。

  2. 标记的方式

    如果将区间内的整数点的权更改为1,可以考虑使用布尔类型的数组或列表,这样可以更节省空间。而不是用0和1表示,可以用TrueFalse

  3. 区间的处理

    在处理区间时,可以考虑使用一个循环,遍历所有区间,将区间内的点进行标记,而不是逐一处理每个区间。


我简单列举一个例子,然后把示意图画出来。

输入描述 :11    3    2     5    4     59    10输出描述  :6

图示

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传


Java代码

import java.util.Scanner;public class RemainingTrees {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);// 读取输入int L = scanner.nextInt();int m = scanner.nextInt();int[] treeStatus = new int[L + 1]; // 标记移走的树的位置for (int i = 0; i < m; i++) {int u = scanner.nextInt();int v = scanner.nextInt();for (int j = u; j <= v; j++) {treeStatus[j] = 1;}}// 统计剩余树的数量int remainingTreesCount = 0;for (int i = 0; i <= L; i++) {if (treeStatus[i] == 0) {remainingTreesCount++;}}// 输出结果System.out.println(remainingTreesCount);scanner.close();}
}

C代码

#include <stdio.h>int main() {int L, m;scanf("%d %d", &L, &m);int treeStatus[L + 1];  // 数轴上的树的状态,0表示未移走,1表示已移走for (int i = 0; i <= L; i++) {treeStatus[i] = 0;}// 标记移走的树的位置for (int i = 0; i < m; i++) {int u, v;scanf("%d %d", &u, &v);for (int j = u; j <= v; j++) {treeStatus[j] = 1;}}// 统计剩余树的数量int remainingTreesCount = 0;for (int i = 0; i <= L; i++) {if (treeStatus[i] == 0) {remainingTreesCount++;}}// 输出结果printf("%d\n", remainingTreesCount);return 0;
}

C++代码

#include <iostream>
#include <vector>using namespace std;int main() {int L, m;cin >> L >> m;vector<int> treeStatus(L + 1, 0);  // 数轴上的树的状态,0表示未移走,1表示已移走// 标记移走的树的位置int u, v;for (int i = 0; i < m; i++) {   cin >> u >> v;for (int j = u; j <= v; j++) {treeStatus[j] = 1;}}// 统计剩余树的数量int remainingTreesCount = 0;for (int i = 0; i <= L; i++) {if (treeStatus[i] == 0) {remainingTreesCount++;}}// 输出结果cout << remainingTreesCount << endl;return 0;
}

Java代码输出结果

例题代码测试结果

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

原题目代码测试结果

在这里插入图片描述


三连支持一下,感谢!

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

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

相关文章

fpmarkets澳福归类总结不同十字星K线的含义

不同的十字星K线代表了不同的含义&#xff0c;各位投资者你们知道这些十字星K线的含义吗&#xff1f;今天fpmarkets澳福就归类总结一下。 首先墓碑十字星和蜻蜓十字星归为一类&#xff0c;重点以墓碑十字星作为参考&#xff1a; 墓碑十字星是一种熊市反转烛台模式&#xff0c;当…

水果FL Studio21.2.3.4004里的一个动态视觉插件Fruity Dance的教程

这是一篇关于水果&#xff08;FL Studio&#xff09;里的一个动态视觉插件Fruity Dance的教程。前部分较多地引用了FL的帮助文档&#xff0c;后部分结合了我操作的一些经验。 &#xff08;文中这种颜色的字可略过不看&#xff0c;属于一些基础操作的解释补充&#xff09; 准备材…

代码随想录Leetcode377. 组合总和 Ⅳ

题目&#xff1a; 代码(首刷看解析 2024年2月27日&#xff09;&#xff1a; class Solution { public:// 思路&#xff1a;动态规划int combinationSum4(vector<int>& nums, int target) {// 1条件判断:无// 2定义dp 初始化 总和为target的数量vector<int> dp…

shiro 整合 springmvc 实战及源码详解

序言 前面我们学习了如下内容&#xff1a; 5 分钟入门 shiro 安全框架实战笔记 shiro 整合 spring 实战及源码详解 相信大家对于 shiro 已经有了最基本的认识&#xff0c;这一节我们一起来学习写如何将 shiro 与 springmvc 进行整合。 spring mvc 整合源码 maven 依赖 版…

【论文阅读】Vison-Language Navigation 视觉语言导航(1)

ACL 2022 VLN视觉和语言导航&#xff1a;任务、方法和未来方向综述 多模态任务新蓝海&#xff1a;视觉语言导航最新进展 Leader board in VLN RXR&#xff1a; Room-across-Room (RxR) is a large-scale, multilingual dataset for Vision-and-Language Navigation (VLN) in…

Python中高效的爬虫框架,你用过几个?

在信息时代&#xff0c;数据是无价之宝。许多开发者和数据分析师需要从互联网上采集大量的数据&#xff0c;用于各种用途&#xff0c;如分析、建模、可视化等。Python作为一门强大的编程语言&#xff0c;提供了多种高效的爬虫框架&#xff0c;使数据采集变得更加容易和高效。本…

安装淘宝镜像cnpm报错

npm 安装淘宝镜像报错 npm install -g cnpm --registryhttps://registry.npm.taobao.org 安装报 The operation was rejected by your operating system. npm ERR! Its possible that the file was already in use (by a text editor or antivirus), npm ERR! or that you la…

Python 实现Excel自动化办公(中)

在上一篇文章的基础上进行一些特殊的处理&#xff0c;这里的特殊处理主要是涉及到了日期格式数据的处理&#xff08;上一篇文章大家估计也看到了日期数据的处理是不对的&#xff09;以及常用的聚合数据统计处理&#xff0c;可以有效的实现你的常用统计要求。代码如下&#xff1…

【力扣 - 有效的括号】

题目描述 给定一个只包括 (&#xff0c;)&#xff0c;{&#xff0c;}&#xff0c;[&#xff0c;] 的字符串 s &#xff0c;判断字符串是否有效。 有效字符串需满足&#xff1a; 左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有一个对应的相同…

游戏界的新十年:3000亿的冒险与短视频的魔法对决

2023年&#xff0c;中国游戏行业呈现新的增长趋势&#xff0c;市场销售收入首次突破3000亿元&#xff0c;标志着一个重要的发展里程碑。 尽管市场整体增速有所放缓&#xff0c;小游戏的兴起却出现了新的机遇。面对市场的不确定性和用户付费额度的预期下降&#xff0c;游戏公司正…

TongWeb8.0注册中心的使用示例-批量更新license

简介&#xff1a; TongWeb8.0注册中心可用于注册和发现 TongWeb 实例服务&#xff0c;也可用于存储和共享 TongWeb 实例配置。 应用场景&#xff1a; 项目上安装多套TongWeb经常更改配置&#xff0c;传统方式下需要逐套更改配置&#xff0c;而通过注册中心管理变更其中任何一个…

ChatGPT学习第三周

&#x1f4d6; 学习目标 ChatGPT在各行各业的应用 探索ChatGPT在不同领域&#xff08;如教育、客户服务等&#xff09;的实际应用案例。 ChatGPT的局限性和挑战 讨论ChatGPT面临的挑战&#xff0c;包括偏见、误解及其限制。 ✍️ 学习活动 学习资料 《人工智能通用大模型(…

数据分析(二):学生成绩预测分析报告

目录 摘要 一、引言 二、 数据源介绍 三、 数据清洗和预处理 3.1 缺失值处理 3.2 异常值处理 3.3 数据编码 四、 探索性数据分析 4.1 可视化相关统计量 4.2 目标数据的分布情况 4.3 Pearson 相关性分析 五、 特征工程 5.1 特征构造 5.1.1 总饮酒量 5.1.2 整体关…

金融行业数字化人事管理:组织管理、风险管控、职级晋升一体化

目前&#xff0c;金融行业正在全面推进数字化转型&#xff0c;推动行业高质量发展。人力资源是组织发展的核心竞争力&#xff0c;数字化的人事管理能够为金融组织降本增效。 行业痛点 1、金融行业分支机构多、人员规模大&#xff0c;随着组织的快速发展&#xff0c;集团内组织…

unity初学问题:如何修改图片的坐标

如图&#xff0c;我们想要修改图片的轴心点坐标&#xff08;Pivot&#xff09; 选择图片组 打开编辑器在里面修改即可&#xff08;最下面的Custom Pivot&#xff09;

相册图片怎么压缩?3种方法教你压缩图片

相册图片怎么压缩&#xff1f;相册图片压缩在日常生活中扮演着至关重要的角色。它不仅能够帮助我们节省手机或电脑的存储空间&#xff0c;避免设备因存储空间不足而运行缓慢&#xff0c;还能显著减少图片在上传、下载或分享时的时间。此外&#xff0c;压缩图片还能在一定程度上…

深圳企业要知道的:堡垒机就选行云管家!

国家非常重视网络安全&#xff0c;不断在完善政策法规以及推动政策执行。作为一线城市&#xff0c;深圳遥遥领先&#xff0c;2024年深圳企业都在积极办理等保手续。这里小编偷偷告诉您&#xff0c;过等保买堡垒机就选行云管家&#xff01; 深圳企业要知道的&#xff1a;堡垒机…

干洗行业上门预约解决方案,干洗店洗鞋店小程序开发;

互联网干洗店洗鞋店小程序,企业干洗方案,干洗行业小程序,上门取衣小程序,预约干洗小程序,校园干洗店小程序,工厂干洗店小程序,干洗店小程序开发&#xff1b; 一、干洗店洗鞋店小程序核心功能介绍: 1.(支持上门取送、送货到店、寄存网点、智能衣柜四种下单方式) 用户下单-上门取…

一个拥有留言功能的个人公众号,能卖多少钱?

为什么公众号没有留言功能&#xff1f;根据要求&#xff0c;自2018年2月12日起&#xff0c;新申请的微信公众号默认无留言功能。有些人听过一个说法&#xff1a;公众号粉丝累计到一定程度或者原创文章数量累计到一定程度就可以开通留言功能。其实这个方法是2018年之前才可以&am…

WPF中如何使用HandyCotrol控件库

HandyControl介绍 HandyControl是一个开源的WPF&#xff08;Windows Presentation Foundation&#xff09;控件库&#xff0c;旨在简化WPF应用程序的开发过程并提高用户界面的美观程度和易用性。它提供了丰富的控件、样式和模板&#xff0c;可以帮助开发人员快速构建出现代化的…