fus0618 @ 2023-07-09 18:08:07
```cpp
#include<iostream>
using namespace std;
#include<cstring>
int main()
{
int a,b,l,j,m,c,cot=0;
cin>>l>>m;
int arr[10000];
memset(arr,1,sizeof(arr));
for(int i=1;i<=m;i++)
{
cin>>a>>b;
for(j=a;j<=b;j++)
{
arr[j]=0;
}
}
for(int i=0;i<=l;i++)
{
if(arr[i]!=0)
{
cot++;
}
}
cout<<cot;
return 0;
}
by midsummer_zyl @ 2023-07-09 18:18:44
@fus0618
代码如下(思路与你大致相同):
#include <bits/stdc++.h>
using namespace std;
int s[1000010];
bool w[1000010];
int main() {
int l, n, a, b, sum = 0;
cin >> l >> n;
for(int i = 1; i <= n; i++) {
cin >> a >> b;
for(int j = a; j <= b; j++) {
if(w[j] == 0) {
w[j] = 1;
}
}
}
for(int i = 0; i <= l; i++) {
if(w[i] == 0) {
sum++;
}
}
cout << sum;
return 0;
}
by zhongboxuan123 @ 2023-07-09 18:54:30
@fus0618 你的memset有问题,memset只能赋3个值(我记得哈)-1,0,225不能赋1,你赋1之后整个数组都是乱的,后面你还写!=0肯定会炸,所以有两种改法,第一种就是把memset改成循环赋值,第二种就是把后面cot++的时候改成当arr[i] != 0时
by dawuzi @ 2023-07-11 15:23:02
@zhongboxuan123 牛!厉害!