Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
29314 M0yunAllgor1thm 【BJ】T3 C++ 运行超时 60 1000 MS 260 KB 1456 2024-05-06 12:26:58

Tests(6/10):


#include <bits/stdc++.h> #define LL long long using namespace std; const int MOD=1e9+7; int a[505]; bool app[505]; int N,M,L,R; int v[505],pos[505]; int f[20][20]; int vis[20],b[20]; LL ans=0; void dfs(int p,int prs) { if(prs>R) return; if(p==M) { for(int i=1;i<=M;i++) { for(int j=i+1;j<=M;j++) { prs+=b[i]>b[j]; } } if(prs>=L&&prs<=R) ans++; return; } for(int i=1;i<=M;i++) { if(vis[i]) continue; vis[i]=1; b[p+1]=i; dfs(p+1,prs+f[p+1][i]); vis[i]=0; } return; } int main() { // freopen("c.in","r",stdin); //freopen("c.out","w",stdout); scanf("%d %d %d",&N,&L,&R); for(int i=1;i<=N;i++) scanf("%d",&a[i]); // puts("qwq"); for(int i=1;i<=N;i++) for(int j=i+1;j<=N;j++) if(a[j]&&a[i]>a[j]) L--,R--; for(int i=1;i<=N;i++) { if(a[i]) app[a[i]]=1; else pos[++M]=i; } // puts("OvO"); M=0; for(int i=1;i<=N;i++) if(!app[i]) v[++M]=i; for(int i=1;i<=M;i++) { for(int j=1;j<=M;j++) { for(int k=1;k<pos[i];k++) f[i][j]+=(a[k]>v[j]); for(int k=pos[i]+1;k<=N;k++) if(a[k]) f[i][j]+=(a[k]<v[j]); } } // puts("^_^"); // puts(""); dfs(0,0); printf("%lld\n",ans%MOD); return 0; }


测评信息: