酷代码 AI
菜单
服务商

对n棵树(n<100),有q次操作,每次把L到R之间的所有树砍掉,请问最后还剩几棵树。 例如n = 5,q = 3。 第一次L=1,R=3。砍掉1、2、3,还剩下4、5; 第二次L=5,R=5。砍掉5,还剩下4; 第三次L=2,R=3。砍掉2、3,还剩下4; 最终还剩下1棵树。 输入: 第一行输入n、q,分别表示n棵树和q次操作。 接下来的q行,每行输入两个数,L和R,表示每次把L到R之间的所有树砍掉。 输出: 一个整数,表示最后还剩几棵树。 输入样例: 5 3 1 3 5 5 2 3 输出样例: 1C++

```cpp #include <iostream> using namespace std; const int MAXN = 100; bool trees[MAXN + 1]; int main() { int n, q; cin >> n >> q; // 初始化所有树为未被砍掉的状态 for (int i = 1; i <= n; ++i) { trees[i] = true; } // 进行q次砍树操作 for (int i = 0; i < q; ++i) { int L, R; cin >> L >> R; // 将L到R之间的树标记为已砍掉 for (int j = L; j <= R; ++j) { trees[j] = false; } } // 统计剩余树的数量 int remaining = 0; for (int i = 1; i <= n; ++i) { if (trees[i]) { remaining++; } } // 输出剩余树的数量 cout << remaining << endl; return 0; } ``` 代码解释 1. 数组`trees`:用于标记每棵树的状态,`true`表示树还在,`false`表示树已被砍掉。 2. 初始化:将所有树的状态初始化为`true`,表示一开始所有树都存在。 3. 砍树操作:每次读取`L`和`R`,将`trees`数组中从`L`到`R`的元素标记为`false`,表示这些树被砍掉。 4. 统计剩余树的数量:遍历`trees`数组,统计值为`true`的元素个数,即为剩余树的数量。 5. 输出结果:输出剩余树的数量。 [2026-02-11 17:33:59 | AI问答 | 421点数解答]

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