比赛 |
Asm_Def战记之透明计算网络 |
评测结果 |
AAAAWWWWWW |
题目名称 |
Asm_Def排兵布阵 |
最终得分 |
40 |
用户昵称 |
NVIDIA |
运行时间 |
7.354 s |
代码语言 |
C++ |
内存使用 |
123.18 MiB |
提交时间 |
2015-11-01 11:09:23 |
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<iomanip>
#include<queue>
#include<cctype>
#include<algorithm>
#include<cmath>
#include<map>
#include<vector>
#include<cstdlib>
using namespace std;
long long vis[4010][5010],num[50001],k,i,sum=0,ans=1,j;
int main()
{
freopen("asm_formation.in","r",stdin);
freopen("asm_formation.out","w",stdout);
ios::sync_with_stdio(false);
for(i=1;i<=4000;i++)
{
vis[i][1]=1;//枚举初始人数种类
}
for (i=1;i<=5000;i++)//枚举人数
{
vis[1][i]=i;
}
for(i=1;i<=5000;i++)//结尾人数
{
vis[0][i]=1;
}
for(i=2;i<=4000;i++)
{
for(j=2;j<=5000;j++)
vis[i][j]=(vis[i-1][j]+vis[i][j-1])% 998244353;//上一个种类必须有一个在第二类最后的前面
}
//读入
cin>>k;
for(i=1;i<=k;i++)
{
cin>>num[i];
}
sum=num[1];//记录方案
for (i=2;i<=k;i++)
{ans=(ans*(vis[num[i]-1][sum+1]%998244353));
sum+=num[i];
}
cout<<ans;
}