题解
2026-05-05 15:32:03
发布于:湖南
6阅读
0回复
0点赞
题意
有一条长度为 L 的马路,马路边从 0 到 L 号每个位置都有一棵树。现在有 m 次区域修路,每次会把一段区间 [l, r] 里的树全部砍掉。问:最后还剩下多少棵树?
思路
1.用数组标记树的状态:a[i] = 0 表示有树,a[i] = 1 表示树被砍掉。
2.每次修路:把区间 [l, r] 的所有位置标记为 1(表示砍掉)。
3.最后统计:遍历 0~L,数出仍然是 0 的位置数量,就是剩下的树。
完整代码
#include <bits/stdc++.h>
using namespace std;
const int N = 1e4 + 5;
int a[N];
int main() {
int L, m;
cin >> L >> m;
while (m--) {
int l, r;
cin >> l >> r;
for (int i = l; i <= r; i++) a[i] = 1;
}
int sum = 0;
for (int i = 0; i <= L; i++) {
if (a[i] != 1) sum ++;
}
cout << sum;
return 0;
}

这里空空如也








有帮助,赞一个