缘起□缘灭 @ 2019-12-05 21:17:53
同样是暴力程序,开静态数组要t一个点,而动态可以过,而且快了220ms这么大。。。 这是为什么?
测评记录1
测评记录2
by qwqqwq_qwqqwq @ 2019-12-05 21:19:16
看不到代码...
by 1saunoya @ 2019-12-05 21:51:56
您好,指针显然是比数组快的 但是在64位下空间是数组的两倍…
by qwqqwq_qwqqwq @ 2019-12-05 21:55:40
@Isaunoya 我看不到题主的代码,但我猜题主在栈上开了一个巨大的数组,这种操作很慢的...
by qwqqwq_qwqqwq @ 2019-12-05 21:55:56
@Isaunoya 和是否使用指针并没什么关系
by 缘起□缘灭 @ 2019-12-06 20:35:54
这是AC代码
#include<bits/stdc++.h>
using namespace std;
int read(){
int res=0;char x=getchar();
while(!isdigit(x))x=getchar();
while(isdigit(x))res=(res<<3)+(res<<1)+(x^48),x=getchar();
return res;
}
int main(){
int n=read(),m=read(),ma=0,mi=10000001;
int a[m+1],b[m+1],f[m+1];
for(int i=1;i<=m;++i)
a[i]=read(),b[i]=read(),f[i]=0,mi=min(mi,a[i]),ma=max(ma,b[i]);
for(int i=mi;i<=ma;++i)
for(int j=m;j>=1;--j)
if(i<=b[j]&&i>=a[j])
{f[j]=1;break;}
int ans=0;
for(int i=1;i<=m;i++)
ans+=f[i];
printf("%d",ans);
}
这是90分的
#include<bits/stdc++.h>
using namespace std;
int read(){
int res=0;char x=getchar();
while(!isdigit(x))x=getchar();
while(isdigit(x))res=(res<<3)+(res<<1)+(x^48),x=getchar();
return res;
}
int main(){
int n=read(),m=read(),ma=0,mi=10000001;
int a[1005],b[1005],f[1005];
for(int i=1;i<=m;++i)
a[i]=read(),b[i]=read(),f[i]=0,mi=min(mi,a[i]),ma=max(ma,b[i]);
for(int i=mi;i<=ma;++i)
for(int j=m;j>=1;--j)
if(i<=b[j]&&i>=a[j])
{f[j]=1;break;}
int ans=0;
for(int i=1;i<=m;i++)
ans+=f[i];
printf("%d",ans);
}