#include<iostream>
using namespace std;
int L,M,cnt,vis[10000+10],head,tail;
int main(){
cin>>L>>M;
for(int i=1;i<=M;i++){
cin>>head>>tail;
for(int j=head;j<=tail;j++)if(vis[j]==0)vis[j]=1;
}
for(int i=0;i<=L;i++)if(vis[i]==0)cnt++;
cout<<cnt<<endl;
return 0;
}
by fzhfzh @ 2019-05-26 10:11:42
```
#include<iostream>
using namespace std;
int L,M,cnt,vis[10000+10],head,tail;
int main(){
cin>>L>>M;
for(int i=1;i<=M;i++){
cin>>head>>tail;
for(int j=head;j<=tail;j++)if(vis[j]==0)vis[j]=1;
}
for(int i=0;i<=L;i++)if(vis[i]==0)cnt++;
cout<<cnt<<endl;
return 0;
}
```
by fzhfzh @ 2019-05-26 10:11:50
希望更丰富的展现?使用Markdown
by 我不认识你 @ 2019-05-26 10:12:05
23333
by 1saunoya @ 2019-05-26 10:12:26
这是本人的代码,可供参考~
```
#include <iostream>
using namespace std;
int q[10001]; //初始化数组(因为题目限制是10000,所以10001就够了,不放心的可以设多一点也无妨)
int main()
{
int a,b,c,d,e=0; //分别初始化马路的长度(a)、区域的数目(b)、一个区域的起始点坐标(c)、终止点的坐标(d)
cin>>a>>b; //获取马路的长度及区域的数目
for(int i=0;i<b;i++) //当i小于b时执行循环
{
cin>>c>>d; //获取一个区域的起始点和终止点的坐标
for(int j=c;j<=d;j++) //双重嵌套循环
{
if(q[j]==0) //当q[j]==0时将其设定为1,并将e的值加1
{
q[j]=1;
e++;
}
}
}
cout<<a-e+1<<endl; //输出结果
return 0; //结束程序
}
```
by Stephen_Curry @ 2019-05-26 10:19:37
@[a1632684023](/space/show?uid=200235)
首先,记得下次发代码要上下加上
```markdown
"```"
"```"
```
,否则会看不清代码(不要加引号)
然后大数组尽量开到函数外面,以防RE
(全局数组可以开大点,但是不能在函数内部用auto大数组)
然后可以在输入区间的时候处理砍树(如下)
```
for (int i=1;i<=areaNumber;i++)
{
int left,right;
cin>>left>>right;
for (int j=left;j<=right;j++)
{
Length[j]=0;//不需要判断
}
}
```
然后数组名字尽量不要用`array`,可能会和STL之类的重复
最后就是统计的时候直接让`number+=Length[i]`即可,
因为如果是0,那么就没有累加,是1,就累加上了。
最后放上原先的代码和现在改完了的代码。
原代码:
```cpp
#include <iostream>
using namespace std;
int main()
{
int length, areaNumber;
cin >> length >> areaNumber;
int number = 0;
int array[areaNumber][2];
int Length[length];
for (int i = 0; i <= length; i++)
Length[i] = 1;
for (int i = 0; i < areaNumber; i++)
{
for (int j = 0; j < 2; j++)
cin >> array[i][j];
}
for (int i = 0; i < areaNumber; i++)
{
for (int j = array[i][0]; j <= array[i][1]; j++)
{
if (Length[j] == 1)
Length[j] = 0;
}
}
for (int i = 0; i <= length; i++)
{
if (Length[i] == 1)
number++;
}
cout << number << endl;
return 0;
}
```
现在的代码:
```cpp
#include <iostream>
using namespace std;
int main()
{
int length, areaNumber;
cin >> length >> areaNumber;
int number = 0;
int array[areaNumber][2];
int Length[length];
for (int i = 0; i <= length; i++)
Length[i] = 1;
for (int i = 1; i <= areaNumber; i++)
{
int left_point, right_point;
cin >> left_point >> right_point;
for (int j = left_point; j <= right_point; j++)
{
Length[j] = 0;
}
}
for (int i = 0; i <= length; i++)
number += Length[i];
cout << number << endl;
return 0;
}
```
不谢qwq
by Jelly_Goat @ 2019-05-26 10:36:57
@[Jelly_Goat](/space/show?uid=122927)
###### 十分感谢
by a1632684023 @ 2019-05-26 10:50:26
@[Stephen_Curry](/space/show?uid=212267)
###### 谢谢了
by a1632684023 @ 2019-05-26 10:56:53
@[fzhfzh](/space/show?uid=158050)
###### 感谢
by a1632684023 @ 2019-05-26 10:57:18