酷代码 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; int main() { int n, q; cin >> n >> q; // 用数组来标记每棵树是否被砍掉,初始值为1表示树还在 bool trees[100]; for (int i = 0; i < n; i++) { trees[i] = true; } for (int i = 0; i < q; i++) { int L, R; cin >> L >> R; // 因为数组下标从0开始,所以要减1 L--; R--; for (int j = L; j <= R; j++) { if (j < n) { // 标记为被砍掉 trees[j] = false; } } } int remaining = 0; for (int i = 0; i < n; i++) { if (trees[i]) { // 统计剩下的树的数量 remaining++; } } cout << remaining << endl; return 0; } ``` 代码解释 1. 初始化:首先读取树的数量`n`和操作次数`q`,创建一个布尔数组`trees`来标记每棵树的状态,初始值都设为`true`,表示树都还存在。 2. 操作处理:循环`q`次,每次读取`L`和`R`,将从`L-1`到`R-1`位置的树在数组中标记为`false`,代表这些树被砍掉。 3. 统计剩余树:遍历数组`trees`,统计值为`true`的元素个数,即剩余树的数量。 4. 输出结果:最后输出剩余树的数量。 [2026-02-11 17:32:39 | AI问答 | 429点数解答]

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