比赛 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;
}