paulyang120 @ 2022-12-05 16:33:08
#include<bits/stdc++.h>
using namespace std;
int main()
{
int l,m;
cin>>l>>m;
int n[l+1],a[m*2];
for(int i=0;i<m*2;i++)
cin>>a[i];
for(int i=1;i<=3;i++)
{
for(int j=a[i*2-2];i<=a[i*2-1];i++)
{
if(n[j]==0)
n[j]==1;
}
}
int x=0;
for(int i=0;i<=500;i++)
{
if(n[i]==1)
x+=1;
}
cout<<x;
}
by paulyang120 @ 2022-12-05 16:33:52
为什么我输出全错了?
by xlpri @ 2022-12-05 16:50:25
倒数第7行是
for(int i=0;i<=l;i++)
不是
for(int i=0;i<=500;i++)
by xlpri @ 2022-12-05 16:57:05
还有,双层循环内可以边输入边操作,大大降低时间复杂度
再还有,这个是否有树(就是你的数组n)可以用bool类型,不需要
if(n[j]==0)
n[j]==1;
(上面怎么是n[j]==1 ???
而成了
n[j]=false
最后统计个数的时候就成了
for(int i=0;i<=l;i++)
{
if(n[i])
x+=1;
}
by Kevin_Mamba @ 2022-12-05 17:02:24
建议 数组写在主函数外 。
by xlpri @ 2022-12-05 17:04:13
(我不信你没有TLE
这是我当时写的代码
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
int l,m;
cin >> l >> m;
bool bol[l + 1];
memset(bol,true,sizeof(bol));
for(int i = 0;i < m;i++)
{
int u,d;
cin >> u >> d;
for(int j = u;j <= d;j++)
{
bol[j] = false;
}
}
int num = 0;
for(int i = 0;i <= l;i++)
{
if(bol[i])
num++;
}
cout << num;
return 0;
}
这是我当时写的,其中memset就是初始化,和下面的代码段是一样的
for(int i = 0;i <= l;i++)
{
bol[i] = true;
}
by xlpri @ 2022-12-05 17:04:44
@yangzhengxi
by paulyang120 @ 2022-12-05 17:16:06
谢谢各位大佬我AC了