滚动数组的大坑!!!!!!!
错误写法:swap 一次是 \(O(N)\) 的!!!!!!!
int dp[N],dp2[N];
int dodp()
{memset(dp,-0x3f,sizeof(dp));memset(dp2,-0x3f,sizeof(dp2));dp2[0]=0;for(int kkk=0;kkk<s.size();kkk++){swap(dp,dp2);memset(dp2,-0x3f,sizeof(dp2[0])*(tot+1));}
}
正确写法:swap 一次是 \(O(1)+O(tot)\) 的!!!!!!!
int f[N]={},g[N]={},*dp,*dp2;
void dodp()
{dp=f;dp2=g;fill(dp,dp+tot+1,-0x3f3f3f3f);fill(dp2,dp2+tot+1,-0x3f3f3f3f);dp2[0]=0;for(int kkk=0;kkk<s.size();kkk++){swap(dp,dp2);fill(dp2,dp2+(tot+1),-0x3f3f3f3f);}
}