标签:lld c++ set mod splay -- blog void amp
1 #include <bits/stdc++.h> 2 using namespace std; 3 4 const int maxn=21; 5 const int mod=9999991; 6 7 int c[maxn][maxn]; 8 void init(){ 9 memset(c,0,sizeof(c)); 10 for(int i=0;i<maxn;i++){ 11 c[i][0]=1; 12 for(int j=1;j<=i;j++) c[i][j]=(c[i-1][j-1]+c[i-1][j])%mod; 13 } 14 } 15 struct BST{ 16 int key; 17 int lc,rc; 18 int sz,lsz,rsz; 19 }bst[maxn]; 20 void inser(int rt,int id,int x){ 21 if(bst[rt].key==0){ 22 bst[rt].key=x; 23 bst[rt].sz=1; 24 return ; 25 } 26 if(bst[rt].key>x){ 27 if(!bst[rt].lc) bst[rt].lc=id; 28 inser(bst[rt].lc,id,x); 29 }else{ 30 if(!bst[rt].rc) bst[rt].rc=id; 31 inser(bst[rt].rc,id,x); 32 } 33 bst[rt].lsz=bst[bst[rt].lc].sz; 34 bst[rt].rsz=bst[bst[rt].rc].sz; 35 bst[rt].sz= bst[rt].lsz+bst[rt].rsz+1; 36 37 } 38 int main(){ 39 int t; 40 scanf("%d",&t); 41 int n; 42 init(); 43 while(t--){ 44 scanf("%d",&n); 45 memset(bst,0,sizeof(bst)); 46 int x; 47 for(int i=1;i<=n;i++){ 48 scanf("%d",&x); 49 inser(1,i,x); 50 } 51 long long ans=1; 52 for(int i=1;i<=n;i++){ 53 (ans*=c[bst[i].sz-1][bst[i].lsz])%=mod; 54 } 55 printf("%lld\n",ans); 56 } 57 }
标签:lld c++ set mod splay -- blog void amp
原文地址:http://www.cnblogs.com/yijiull/p/7275914.html