由于这题是判断最后剩下多少树,而且l的数据范围并不大,可以直接无脑判断每一棵树是否移走,最后求和即可。直接上带代码。
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
int main()
{
int l;
int m;
scanf("%d %d", &l, &m);
int* tree = (int*)malloc((l + 1) * sizeof(int));
for (int i = 0; i < l + 1; i++)
{
tree[i] = 1;
}
for (int i = 0; i < m; i++)
{
int a = 0;
int b = 0;
scanf("%d %d", &a, &b);
for (int i = a; i <= b; i++)
{
tree[i] = 0;
}
}
int sum = 0;
for (int i = 0; i < l + 1; i++)
{
if (tree[i] == 1)
{
sum++;
}
}
printf("%d", sum);
free(tree);
return 0;
}
注意是用vs写的,并不支持c99,用malloc函数来创建一个动态数组来表示树的状态。同时注意释放内存。