比赛 |
Asm_Def战记之透明计算网络 |
评测结果 |
AAAATTTTTT |
题目名称 |
Asm_Def排兵布阵 |
最终得分 |
40 |
用户昵称 |
1azyReaper |
运行时间 |
6.239 s |
代码语言 |
C++ |
内存使用 |
4.89 MiB |
提交时间 |
2015-11-01 11:29:42 |
显示代码纯文本
- #include <fstream>
- #include <algorithm>
- #include <cstdio>
- #include <cstring>
- #include <deque>
- #define ifs ifstream
- #define ofs ofstream
- #define MOD 998244353
- #define MAX 100010
- using namespace std;
- ifs fin("asm_formation.in");
- ofs fout("asm_formation.out");
- int n,sum,ans=0,num[MAX],num1[MAX];
- long long sub[MAX*5];
- int work(int x,int y)
- {
- num1[x]-=1;
- sub[y]=x;
- if(num1[x]==0)
- {
- int v=x;
- for(int j=y;j>=1;j--)
- {
- if(v<sub[j]&&num1[sub[j]]==0)
- return 0;
- }
- }
- if(y==sum)
- ans++;
- for(int j=1;j<=n;j++)
- {
- if(num1[j]>0)
- {
- work(j,y+1);
- num1[j]++;
- }
- }
- return 0;
- }
- int main()
- {
- fin>>n;
- for(int i=1;i<=n;i++)
- {
- fin>>num[i];
- sum+=num[i];
- }
- for(int i=1;i<=n;i++)
- {
- for(int j=1;j<=sum;j++)
- {
- sub[j]=0;
- }
- for(int j=1;j<=n;j++)
- {
- num1[j]=num[j];
- }
- work(i,1);
- }
- fout<<ans%MOD<<endl;
- //fout<<a[k]<<endl;
- return 0;
- }