hgggggg @ 2023-08-06 17:38:07
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a[1001],b[10001];
int h=0;
int n,m;
cin>>n>>m;
int u=2*m;
for(int y=0;y<=n;y++)
{
a[y]=0;
}
for(int i=1;i<=u;i++)
{
cin>>b[i];
}
while((u-2)>=0)
{
for(int j=b[u-1];j<=b[u];j++)
a[j]=1;
u=u-2;
}
for(int p=0;p<=n;p++)
{
if(a[p]=0)
h++;
}
cout<<h;
return 0;
}
by dsfgsdf @ 2023-08-06 18:32:58
@hgggggg
其实你可以尝试一下新思路,你可以把起始的树和结束的树分成两个数组,这样子数组下标可以好操控一点,你要不要试试看(只需要改while循环里面的并且加一个变量)
by Heartstrings @ 2023-08-06 18:43:13
@lfxxzms 其实树状数组可以做
by hgggggg @ 2023-08-06 18:47:47
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a[10001],b[10001],s[10001]={0};
int m,n,temp=0;
cin>>m>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
cin>>b[i];
}
for(int j=1;j<=n;j++)
{
for(int p=a[j];p<=b[j];p++)
s[p]==1;
}
for(int k=0;k<=m;k++)
{
if(s[k]==0)
temp++;
}
cout<<temp;
return 0;
}
@lonely_conqueror 这个还是不行耶,why
by 啊吧怪 @ 2023-08-06 18:55:09
@hgggggg 第15行的
s[p]==1
改为
s[p]=1
才行,变量的赋值不能用两个等于
by 啊吧怪 @ 2023-08-06 18:55:40
@hgggggg 修改后可过
by Heartstrings @ 2023-08-06 18:58:53
@hgggggg 这个s[p]==1
是判断用的
赋值要用s[p]=1
by hgggggg @ 2023-08-06 18:59:17
@啊吧怪 还是不行也
by hgggggg @ 2023-08-06 19:00:16
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a[10001],b[10001],s[10001]={0};
int m,n,temp=0;
cin>>m>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
cin>>b[i];
}
for(int j=1;j<=n;j++)
{
for(int p=a[j];p<=b[j];p++)
s[p]=1;
}
for(int k=0;k<=m;k++)
{
if(s[k]=0)
temp++;
}
cout<<temp;
return 0;
}
这个不行,结果为0
by 啊吧怪 @ 2023-08-06 19:02:23
@hgggggg 我说的是15行的,没让你把下面
if(s[k]==0)
改成
if(s[k]=0)
by Heartstrings @ 2023-08-06 19:03:17
@hgggggg 这个s[p]==1
是判断用的
赋值要用s[p]
=1