官方题解自然是对的
但官方数据太拉了,导致直接记忆化 DP 可以通过
用这个数据可以把这篇题解卡飞
#include<cstdio>
#include<cstdlib>
#include<ctime>
#include<algorithm>
#include<set>
using namespace std;
typedef long long ll;
const int MAXN=1e6+5;
int rnd(int l,int r){
return rand()%(r-l+1)+l;
}
int a[MAXN],b[MAXN];
int main(){
freopen("zero.in","w",stdout);
srand(time(0));
int N=300000,B=300;
printf("%d\n",N);
for(int i=1;i<=N/2;++i)a[i]=i;
for(int i=N/2+1;i<=N;++i)a[i]=i;
for(int i=1;i<=N;++i)printf("%d ",a[i]-a[i-1]);putchar('\n');
int x=0;
for(int i=1;i<=N;++i){
if(i%B==0)x=-a[i];
b[i]=x;
}
for(int i=1;i<=N;++i)printf("%d ",b[i]-b[i-1]);putchar('\n');
return 0;
}