求助....只对了前两个,感觉思路应该没问题吧?
查看原帖
求助....只对了前两个,感觉思路应该没问题吧?
664168
Wolnest楼主2022/2/21 18:16
#include <iostream>
using namespace std;

int main(void)
{
	int l, m, u[110] = {0}, v[110] = {0}, sum = 0;
	cin >> l >> m;
	for(int i = 1; i <= m; i++)
	scanf("%d %d", &u[i], &v[i]);
	//不考虑重合的树木 
	for(int i = 1; i <= m; i++)
	sum += v[i] - u[i] + 1;
	//进行重合的判读
	for(int i = 1; i <= m; i++)
	{
		for(int j = 1; j <= m; j++)
		{
			if(j == i)
				continue;
			//u[i] < u[j] < v[i] < v[j]的情况(相交) 
			if(u[i] < u[j] && u[j] <= v[i] && v[i] < v[j]) 
			sum -= (v[i] - u[j] + 1);
			//u[i] < u[j] < v[j] < v[i]的情况(相融) 
			else if(u[i] <= u[j] && v[j] <= v[i])
			sum -= (v[j] - u[j] + 1);
		}
	}
	cout << l+1 - sum << endl;
	return 0;
}
2022/2/21 18:16
加载中...