酷代码 AI
菜单
服务商

题目描述 某校大门外长度为 L 的马路上有一排树,每两棵相邻的树之间的间隔都是 1 米。我们可以把马路看成一个数轴,马路的一端在数轴 0 的位置,另一端在 L 的位置;数轴上的每个整数点,即 0,1,2,…,L,都种有一棵树。 由于马路上有一些区域要用来建地铁。这些区域用它们在数轴上的起始点和终止点表示。已知任一区域的起始点和终止点的坐标都是整数,区域之间可能有重合的部分。现在要把这些区域中的树(包括区域端点处的两棵树)移走。你的任务是计算将这些树都移走后,马路上还有多少棵树。 输入 第一行有两个整数 L( 1 ≤ L ≤ 10 4 1≤L≤10 4 )和 M( 1 ≤ M ≤ 10 2 1≤M≤10 2 ), L 代表马路的长度, M 代表区域的数目, L 和 M 之间用一个空格隔开。接下来的 M 行每行包含两个不同的整数,用一个空格隔开,表示一个区域的起始点和终止点的坐标。 对于 20% 的数据,区域之间没有重合的部分;对于其它的数据,区域之间有重合的情况。 输出 包括一行,这一行只包含一个整数,表示马路上剩余的树的数目。

以下是解决该问题的Python代码: ```python # 读取输入的马路长度 L 和区域数目 M L, M = map(int, input().split()) # 初始化一个长度为 L+1 的列表,用于标记每棵树是否被移除,初始值都为 0 表示未移除 trees = [0] * (L + 1) # 循环 M 次,处理每个区域 for _ in range(M): # 读取每个区域的起始点和终止点 start, end = map(int, input().split()) # 将该区域内的树标记为已移除(标记为 1) for i in range(start, end + 1): trees[i] = 1 # 统计剩余树的数量 remaining_trees = trees.count(0) # 输出剩余树的数量 print(remaining_trees) ``` 代码解释: 1. 输入读取:首先读取两个整数 `L` 和 `M`,分别表示马路的长度和区域的数目。 2. 初始化标记列表:创建一个长度为 `L + 1` 的列表 `trees`,用于标记每棵树是否被移除,初始值都为 0 表示未移除。 3. 处理每个区域:循环 `M` 次,每次读取一个区域的起始点和终止点,将该区域内的树在 `trees` 列表中对应的位置标记为 1 表示已移除。 4. 统计剩余树的数量:使用 `count` 方法统计 `trees` 列表中值为 0 的元素个数,即剩余树的数量。 5. 输出结果:输出剩余树的数量。 [2025-12-20 20:42:13 | AI问答 | 385点数解答]

相关提问
发财导航,免费问AI
实用工具查看更多