关于函数内部的空间问题
  • 板块学术版
  • 楼主vicky2048_2
  • 当前回复12
  • 已保存回复12
  • 发布时间2023/4/29 09:55
  • 上次更新2023/10/23 17:18:10
查看原帖
关于函数内部的空间问题
177000
vicky2048_2楼主2023/4/29 09:55

rt

之前只知道main函数里面的临时变量空间不能开太大不然会炸

然后我就以为函数内部的数组都不能开太大,不然会炸

but

评测记录

void fft(cp *a,int n,int inv){
    if(n==1) return ;
    cp a1[(n>>1)+5],a2[(n>>1)+5];
    for(int i=0;i<=n;i+=2) a1[i>>1]=a[i],a2[i>>1]=a[i+1];//这里是i+=2!!!
    fft(a1,n>>1,inv),fft(a2,n>>1,inv);
    for(int i=0;i<(n>>1);i++){
        cp x(cos(2.0*P*i/n),inv*sin(2.0*P*i/n)),ax=x*a2[i];
        a[i]=a1[i]+ax,a[i+(n>>1)]=a1[i]-ax;
    }
}

其中有一行代码:

cp a1[(n>>1)+5],a2[(n>>1)+5];

这里的n最坏情况下约为 4∗1064*10^6

我不是很明白函数内部到底能不能开比较大的数组,数组若不能开太大,那么函数内部开数组的空间上限为究竟为多少呢

或者如果根本不是空间的问题,那么为啥main内部数组开太大会炸阿(保证数组所占空间在题目限制范围内)

2023/4/29 09:55
加载中...