20分
查看原帖
20分
755243
MAPTY楼主2022/8/12 10:34
#include<stdio.h>

int main()
{
	int l, m, c[205], i, k = 0, j = 0;
	scanf("%d %d", &l, &m);
	for (i = 1; i <= m * 2; i++)
	{
		scanf("%d", &c[i]);
	}
	for (i = 2; i <= m * 2; i = i + 2) //k统计不考虑重叠时被砍掉的树的数量
	{
		k += c[i] - c[i - 1] + 1;
	}
	for (i = 3; i <= m * 2; i = i + 2) //用j统计重叠部分重复砍的树数量
	{
		if (c[i] < c[i - 2] && c[i + 1] < c[i - 1] && c[i + 1]>c[i - 2])
		{
			j += (c[i + 1] - c[i - 2]) + 1;
		}
		else if (c[i] > c[i - 2] && c[i + 1] < c[i - 1])
		{
			j += c[i + 1] - c[i] + 1;
		}
		else if (c[i] > c[i - 2] && c[i] < c[i - 1] && c[i + 1] > c[i - 1])
		{
			j += c[i - 1] - c[i] + 1;
		}
	}
	printf("%d", l + 1 - (k - j)); // k-j表示实际砍掉的树
}
2022/8/12 10:34
加载中...