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∗106
我不是很明白函数内部到底能不能开比较大的数组,数组若不能开太大,那么函数内部开数组的空间上限为究竟为多少呢
或者如果根本不是空间的问题,那么为啥main内部数组开太大会炸阿(保证数组所占空间在题目限制范围内)