C++区间模拟:计算剩余完好树木数量
根据你的问题,我们需要模拟一个区间覆盖过程:总共有 `n` 棵树(编号从 1 到 n),有 `m` 个区间,每个区间 `[Li, Ri]` 内的树木都会被摧毁,区间可能重叠,但每棵树只被摧毁一次。实际上,我们需要做的就是将所有被覆盖的树标记为摧毁,最后统计未被标记的树的数量。 我们可以用一个布尔数组或者集合来记录被摧毁的树。由于 `n < 100`,直接用数组标记非常高效。 以下是 C++ 的实现: ```cpp #include <iostream> #include <vector> using namespace std; int main() { int n, m; cin >> n >> m; // 标记数组,true 表示该树已被摧毁 vector<bool> destroyed(n + 1, false); for (int i = 0; i < m; ++i) { int L, R; cin >> L >> R; // 将区间 [L, R] 内的树标记为摧毁 for (int j = L; j <= R; ++j) { destroyed[j] = true; } } int remaining = 0; for (int i = 1; i <= n; ++i) { if (!destroyed[i]) { remaining++; } } cout << remaining << endl; return 0; } ``` ## 代码说明 - 使用 `vector<bool>` 记录每棵树是否被摧毁。 - 遍历每个区域,将其内的所有树标记为 `true`。 - 最后统计没有被标记为 `true` 的树的数量,即为剩余完好的树木。 ## 示例 输入: ``` 10 3 2 5 3 7 8 9 ``` 过程: - 树 2~5 被摧毁 - 树 3~7 被摧毁(但 3~5 已摧毁,新摧毁 6,7) - 树 8~9 被摧毁 最终被摧毁的树:2,3,4,5,6,7,8,9,共 8 棵。 剩余:树 1 和树 10,共 2 棵。 输出: ``` 2 ``` ######[AI问答 | 499点数解答 | 2026-06-21 19:25:31]
- Python实现:随机录入45位学生四次成绩函数大揭秘(GPT | 477点数解答 | 2024-12-17 17:00:35)390
- Python实现班级45位同学成绩生成、总评计算及分数统计(字节豆包 | 579点数解答 | 2024-12-21 11:55:01)279
- Python实现45位学生四次成绩随机录入及输出(GPT | 441点数解答 | 2024-12-21 21:02:22)283
- Python实战:45位同学成绩生成、总评计算与分数统计揭秘(字节豆包 | 688点数解答 | 2024-12-22 10:14:17)272
- 易语言读取文本文件并显示到超级列表框:代码示例与注意要点(DeepSeek | 571点数解答 | 2025-08-23 20:54:40)287
- 易语言:读取并显示特定文本到超级列表框,还能增加新数据的方法与要点(DeepSeek | 1317点数解答 | 2025-08-23 20:58:40)280
- Telegram流量查询机器人开发全攻略(字节豆包 | 1598点数解答 | 2026-05-31 14:15:26)20
- mallshop商城网站:数据库设计与强大业务功能全揭秘(GPT | 257点数解答 | 2024-12-09 14:08:15)321
- Python 高效求解:让数列变身接龙数列最少需删多少数?(字节豆包 | 493点数解答 | 2025-12-13 10:25:59)88
- C++实现:输入整数英文单词算乘积,输出数字与英文结果,可多次计算!(GPT | 2268点数解答 | 2024-05-24 01:55:27)410
- C语言巧解:计算整数区间内最遥远素数差值(阿里通义 | 428点数解答 | 2024-11-22 14:53:33)196
- C++ 实现:根据给定序列与条件计算满足要求的整数对数量(字节豆包 | 232点数解答 | 2025-04-23 17:33:20)184