调了1h21min 乐死了
做法是容斥算出操作 0,1,2,3 次的排列数量。
sum0=1;
sum1=(2ll*fac[2*n]-fac[n]-sum0+2ll*mod)%mod;
sum2=(2ll*C(2*n,n)*fac[n]%mod*fac[2*n]%mod)%mod;
for(int i=0;i<=n;i++)
sum2=(sum2-1ll*fac[n]*fac[n]*fac[n]%mod*C(2*n-i,n)%mod+mod)%mod;
sum2=(sum2-sum0-sum1+2ll*mod)%mod;
sum3=(((ll)fac[3*n]-sum2-sum1-sum0)%mod+mod)%mod;
printf("%lld\n",(0ll*sum0+1ll*sum1+2ll*sum2+3ll*sum3+4ll*sum4)%mod);
第二个样例比答案多 72,求看式子有没有问题/kel