libin13815498262 @ 2023-02-12 15:02:11
#include<bits/stdc++.h>
using namespace std;
int main()
{
int i,l,m,count=0;
cin>>l>>m;
//长度l与m个区域
int *x=new int[2*m];
for(i=0;i<2*m;i++)
cin>>x[i];
//m个区间
int b[l+1];
for(i=0;i<l+1;i++){
b[i]=0;
}
//赋值为0
for(i=0;i<l+1;i+2){
if(i>=x[i]&&i<=x[i+1])
b[i]=1;
}
//在m个区域区间内的做标记为1
for(i=0;i<i+1;i++){
if(b[i]==0)
count++;
}
//遍历,不在m个区域区间内的计数器统计
cout<<count<<endl;
//输出
return 0;
}
by Nt_Tsumiki @ 2023-02-12 15:05:04
for(i=0;i<i+1;i++){
把
by libin13815498262 @ 2023-02-12 15:05:22
提交代码测试显示全是TLE
by Nt_Tsumiki @ 2023-02-12 15:07:34
@libin13815498262 改了吗
by libin13815498262 @ 2023-02-12 15:07:41
@Nt_Yester 谢谢大哥,但是我改了试了一下,还是没用,测试点全是TLE
by Nt_Tsumiki @ 2023-02-12 15:08:43
@libin13815498262
for(i=0;i<l+1;i+2){
把
by libin13815498262 @ 2023-02-12 15:12:17
@Nt_Yester 这样好像就做不出来了,变成2m-1个区域了
by Nt_Tsumiki @ 2023-02-12 15:13:48
@libin13815498262 还是给你看看我的吧,你写的bug有点多。
#include<iostream>
using namespace std;
int u[10001],v[10001],num[10001];
int main()
{
int l,m,sum=0;
cin>>l>>m;
for(int i=1;i<=m;i++)
{
cin>>u[i]>>v[i];
for(int j=u[i];j<=v[i];j++)
{
if(num[j]==0)num[j]=1;
}
}
for(int i=0;i<=l;i++)
{
if(num[i]==0)sum++;
}
cout<<sum;
}
by libin13815498262 @ 2023-02-12 15:15:02
@Nt_Yester 好的,谢谢大佬
by libin13815498262 @ 2023-02-12 16:04:22
#include<bits/stdc++.h>
using namespace std;
int main()
{
int i,l,m,count=0;
cin>>l>>m;
int *x=new int[2*m];
for(i=0;i<2*m;i++)
cin>>x[i];
int *b=new int[l+1];
for(i=0;i<l+1;i++){
b[i]=0;
}
for(i=0;i<l+1;i++){
for(int j=0;j<2*m;j+=2){
if(i>=x[j]&&i<=x[j+1])
b[i]=1;}
}
for(i=0;i<l+1;i++){
if(b[i]==0)
count++;
}
cout<<count<<endl;
}
找到BUG了,数组X和b长度不一样,我公用变量了