为什么这个策略不对?
#include <bits/stdc++.h>
using namespace std;
long long t,n,op[1200],p[1200],s[600][600],cnt=0;
void solve(long long w,long long now)
{
if(w==0)return;
for(int i=1;i<=w;i++)
{
op[++cnt]=now,p[cnt]=i;
if(now==0)for(long long j=1;j<=n;j++)s[i][j]=j;
else if(now==1)for(long long j=1;j<=n;j++)s[j][i]=j;
}
solve(w>>1,now^1);
}
int main()
{
scanf("%lld",&t);
while(t--)
{
cnt=0;
scanf("%lld",&n);
solve(n,0);
long long ans=0;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
ans+=s[i][j];
printf("%lld %lld\n",ans,cnt);
for(int i=1;i<=cnt;i++)
{
printf("%lld %lld ",op[i]+1,p[i]);
for(long long j=1;j<=n;j++)printf("%lld ",j);
printf("\n");
}
}
return 0;
}
每次到 Expret 就被 C 题卡下来,如何提升 C 题能力?