比赛 Asm_Def战记之透明计算网络 评测结果 AAAATTTTTT
题目名称 Asm_Def排兵布阵 最终得分 40
用户昵称 1azyReaper 运行时间 6.239 s
代码语言 C++ 内存使用 4.89 MiB
提交时间 2015-11-01 11:29:42
显示代码纯文本
  1. #include <fstream>
  2. #include <algorithm>
  3. #include <cstdio>
  4. #include <cstring>
  5. #include <deque>
  6. #define ifs ifstream
  7. #define ofs ofstream
  8. #define MOD 998244353
  9. #define MAX 100010
  10. using namespace std;
  11. ifs fin("asm_formation.in");
  12. ofs fout("asm_formation.out");
  13. int n,sum,ans=0,num[MAX],num1[MAX];
  14. long long sub[MAX*5];
  15. int work(int x,int y)
  16. {
  17. num1[x]-=1;
  18. sub[y]=x;
  19. if(num1[x]==0)
  20. {
  21. int v=x;
  22. for(int j=y;j>=1;j--)
  23. {
  24. if(v<sub[j]&&num1[sub[j]]==0)
  25. return 0;
  26. }
  27. }
  28. if(y==sum)
  29. ans++;
  30. for(int j=1;j<=n;j++)
  31. {
  32. if(num1[j]>0)
  33. {
  34. work(j,y+1);
  35. num1[j]++;
  36. }
  37. }
  38. return 0;
  39. }
  40. int main()
  41. {
  42. fin>>n;
  43. for(int i=1;i<=n;i++)
  44. {
  45. fin>>num[i];
  46. sum+=num[i];
  47. }
  48. for(int i=1;i<=n;i++)
  49. {
  50. for(int j=1;j<=sum;j++)
  51. {
  52. sub[j]=0;
  53. }
  54. for(int j=1;j<=n;j++)
  55. {
  56. num1[j]=num[j];
  57. }
  58. work(i,1);
  59. }
  60. fout<<ans%MOD<<endl;
  61. //fout<<a[k]<<endl;
  62. return 0;
  63. }