大神可以帮看一下吗,结果没问题,但只有20分
查看原帖
大神可以帮看一下吗,结果没问题,但只有20分
1606724
CloudNinewhj楼主2024/12/7 09:17
#include<iostream>
#include<cstdio>
using namespace std;
int main() {
	int l;
	int m;
	cin >> l >> m;
	int *a = new int[m];
	int *b = new int[m];
	int s = 0;
	for (int i = 0; i < m; i++) {
		cin >> a[i] >> b[i];
		s = s + (b[i] - a[i]+1);
	}
	for (int i = 0; i < m; i++) {
		for (int j = 0; j < m; j++) {
			if (a[i] >a[j] && a[i] <= b[j]&&b[i]>b[j]) {
				s = s - (b[j] - a[i] + 1); break;
				//相互重和部分
			}
			if (a[i] >a[j] && b[i] < b[j]) {
				s = s - (b[i] - a[i] + 1); break;
			}
			if (a[i] >= a[j] && b[i] < b[j]) {
				s = s - (b[i] - a[i] + 1); break;
			}
			if (a[i] > a[j] && b[i] <= b[j]) {
				s = s - (b[i] - a[i] + 1); break;
			}//这三个是两个区域包含情况
			//break为了防止多个区域多次重合导致减去过多

		}
	}
	int y = l - s+1;
	cout << y;
	delete[]a;
	delete[]b; 
	return 0;
}//试了几个数,结果都没有问题。但只有20分,我是小白,刚学两个月c++,只想到了这种用多个条件判断
2024/12/7 09:17
加载中...