提交记录 3762


用户 题目 状态 得分 用时 内存 语言 代码长度
applese noi18b. 【NOI2018】冒泡排序 Wrong Answer 8 167.627 ms 23768 KB C++ 2.77 KB
提交时间 评测时间
2018-07-18 17:21:23 2020-07-31 21:32:43
#pragma GCC optimize(3)
#pragma GCC optimize("Ofast")
#pragma GCC optimize("inline")
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
bool Finish_read;
template<class T>inline void read(T &x){Finish_read=0;x=0;int f=1;char ch=getchar();while(!isdigit(ch)){if(ch=='-')f=-1;if(ch==EOF)return;ch=getchar();}while(isdigit(ch))x=x*10+ch-'0',ch=getchar();x*=f;Finish_read=1;}
template<class T>inline void print(T x){if(x/10!=0)print(x/10);putchar(x%10+'0');}
template<class T>inline void writeln(T x){if(x<0)putchar('-');x=abs(x);print(x);putchar('\n');}
template<class T>inline void write(T x){if(x<0)putchar('-');x=abs(x);print(x);}
/*================Header Template==============*/
const int maxn=600005;
const ll mod=998244353;
int n,m,T,p[maxn];
ll h[maxn];
namespace {
    inline ll Pow(ll a,ll b) {
        ll res=1;
        while(b) {
            if(b&1)
                res=res*a%mod;
            a=a*a%mod;
            b>>=1;
        }
        return res;
    }
    inline ll Inv(const ll &x) {
        return Pow(x,mod-2);
    }
    inline ll Add(const ll &x,const ll &y) {
        ll res=x+y;
        if(res>=mod)
            res-=mod;
        return res;
    }
    inline ll Sub(const ll &x,const ll &y) {
        ll res=x-y;
        if(res<0)
            res+=mod;
        return res;
    }
    inline ll Mul(const ll &x,const ll &y) {
        ll res=x*y;
        if(res>=mod)
            res%=mod;
        return res;
    }
    inline ll Div(const ll &x,const ll &y) {
        ll res=x*Inv(y);
        if(res>=mod)
            res%=mod;
        return res;
    }
}
int bit[10];
int ans[10][362881];
unordered_map<ll,int>rev[10];
int q[10];
inline int lb(int x) {
	return x&(-x);
}
inline void add(int x,int y) {
	for(;x<=y;x+=lb(x))
		bit[x]++;
}
inline int que(int x) {
	int res=0;
	for(;x;x-=lb(x))
		res+=bit[x];
	return res;
}
inline void init(int x) {
	for(int i=1;i<=x;++i)
		q[i]=i;
	int cnt=0;
	do {
		int flg1=0,flg2=0;
		ll flg3=0;
		for(int i=1;i<=x;++i)
			flg1+=abs(i-q[i]),flg2+=i-1-que(q[i]),add(q[i],x),flg3=flg3*x+(q[i]-1);
		if(flg1/2==flg2)
			ans[x][cnt]++;
		rev[x][flg3]=cnt;
		cnt++;
		for(int i=1;i<=x;++i)
			bit[i]=0;
	}while(next_permutation(q+1,q+x+1));
	for(int i=cnt-1;~i;--i)
		ans[x][i]+=ans[x][i+1];
//		,cout<<ans[x][i]<<" ";
//	cout<<endl;
}
inline void File() {
	freopen("inverse.in","r",stdin);
	freopen("inverse.out","w",stdout);
}
int main() {
	h[0]=1;
	for(int i=1;i<=300000;++i)
		h[i]=Mul(Mul(h[i-1],4*i-2),Inv(i+1));
	for(int i=1;i<=9;++i)
		init(i);//,cerr<<i<<endl;
	read(T);
	while(T--) {
		read(n);
		bool flg=1;
		for(int i=1;i<=n;++i)
			read(p[i]),flg&=(p[i]==i);
		if(n<=9) {
			ll now=0;
			for(int i=1;i<=n;++i)
				now=now*n+(p[i]-1);
			printf("%d\n",ans[n][rev[n][now]+1]);
			continue;
		}
		if(flg) {
			printf("%lld\n",h[n]-1);
			continue;
		}
	}
}

CompilationN/AN/ACompile OKScore: N/A

Testcase #1134.86 ms20 MB + 952 KBAcceptedScore: 4

Testcase #2134.761 ms20 MB + 952 KBAcceptedScore: 4

Testcase #3134.7 ms20 MB + 948 KBWrong AnswerScore: 0

Testcase #4134.758 ms20 MB + 948 KBWrong AnswerScore: 0

Testcase #5134.747 ms20 MB + 948 KBWrong AnswerScore: 0

Testcase #6134.767 ms20 MB + 948 KBWrong AnswerScore: 0

Testcase #7134.69 ms20 MB + 948 KBWrong AnswerScore: 0

Testcase #8134.788 ms20 MB + 948 KBWrong AnswerScore: 0

Testcase #9134.684 ms20 MB + 948 KBWrong AnswerScore: 0

Testcase #10134.686 ms20 MB + 948 KBWrong AnswerScore: 0

Testcase #11134.773 ms20 MB + 948 KBWrong AnswerScore: 0

Testcase #12134.751 ms20 MB + 948 KBWrong AnswerScore: 0

Testcase #13134.777 ms20 MB + 948 KBWrong AnswerScore: 0

Testcase #14134.82 ms20 MB + 948 KBWrong AnswerScore: 0

Testcase #15134.813 ms20 MB + 948 KBWrong AnswerScore: 0

Testcase #16134.759 ms20 MB + 952 KBWrong AnswerScore: 0

Testcase #17134.784 ms20 MB + 948 KBWrong AnswerScore: 0

Testcase #18134.749 ms20 MB + 952 KBWrong AnswerScore: 0

Testcase #19134.691 ms20 MB + 952 KBWrong AnswerScore: 0

Testcase #20134.777 ms20 MB + 952 KBWrong AnswerScore: 0

Testcase #21156.874 ms21 MB + 964 KBWrong AnswerScore: 0

Testcase #22162.182 ms22 MB + 200 KBWrong AnswerScore: 0

Testcase #23167.627 ms22 MB + 636 KBWrong AnswerScore: 0

Testcase #24167.073 ms23 MB + 44 KBWrong AnswerScore: 0

Testcase #25165.756 ms23 MB + 216 KBWrong AnswerScore: 0


Judge Duck Online | 评测鸭在线
Server Time: 2026-04-18 01:14:03 | Loaded in 1 ms | Server Status
个人娱乐项目,仅供学习交流使用 | 捐赠