AT_1_ttpc2024_1_b.Self Checkout

省选/NOI-

通过率:0%

AC君温馨提醒

该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

给你一个由数字 1, 2, 3 组成且长度为 NN 的数列 SS。请找出所有由数字 1 和 2 组成的数列 AA,使通过一定的操作后,生成的数列 TT 等于 SS。我们要计算这样的数列 AA 的个数,并对结果取 998244353998244353 的余数。可以证明,符合要求的数列 AA 的个数是有限的。

操作描述如下:

  1. 初始化变量 C=0C = 0。
  2. 如果数列 AA 中存在数字 1,将最前面的一个 1 移除,并将 CC 加 1。
  3. 如果此时 AA 仍然不为空,移除 AA 的第一个元素 xx,并将 CC 加上 xx 的值。
  4. 将 CC 添加到数列 TT 的末尾。
  5. 如果此时 AA 为空,操作结束;否则,返回步骤 1。

输入格式

输入包含两个部分:

  • 一个整数 NN,代表数列 SS 的长度。
  • 接下来是 NN 个整数,分别是 S1,S2,…,SNS_1, S_2, \dots, S_N。

输出格式

输出满足条件的数列 AA 的个数,对 998244353998244353 取余的结果。

输入输出样例

  • 输入#1

    2
    3 2

    输出#1

    5
  • 输入#2

    6
    3 2 2 3 2 1

    输出#2

    4
  • 输入#3

    5
    3 2 1 3 2

    输出#3

    0

说明/提示

  • 所有输入均为整数。
  • 1≤N≤1061 \le N \le 10^6
  • 1≤Si≤31 \le S_i \le 3

样例解释 1

如果 S=(3,2)S = (3, 2),则满足条件的数列 AA 有 (1,2,2)(1, 2, 2), (2,1,2)(2, 1, 2), (2,2,1)(2, 2, 1), (2,1,1,1)(2, 1, 1, 1) 和 (1,2,1,1)(1, 2, 1, 1),共 5 种。例如,对于 A=(2,1,1,1)A = (2, 1, 1, 1):

  • 移除 AA 中首个 11,此时 A=(2,1,1)A = (2, 1, 1),C=1C = 1。
  • 移除 AA 的第一个元素 2,此时 A=(1,1)A = (1, 1),C=3C = 3。
  • 把 CC 加入 TT,得到 T=(3)T = (3)。
  • 再移除 AA 中首个 11,此时 A=(1)A = (1),C=1C = 1。
  • 移除 AA 的第一个元素 1,AA 变为空,C=2C = 2。
  • 将 CC 加入 TT,得到 T=(3,2)T = (3, 2)。

样例解释 3

也有可能没有符合条件的数列 AA,这种情况结果为 0。

本翻译由 AI 自动生成

输入解题思路,AI测评打分。不知道怎么写?

首页