A7472 | 午枫的涂色方案
时间限制1s
内存限制256MB
通过 / 提交0/0
题目描述
小午在课堂上有一排 $N$ 个座位,从左到右编号为 $1$ 到 $N$。最开始,每个座位 $i$ 上写着一个数字 $i \bmod 2$,也就是 0 或 1 交替出现。现在小午可以进行若干次(可以为 0 次)操作,每次操作如下:
选择两个位置 $l$ 和 $r$(要求 $l + 1 < r$),并满足:
- 座位 $l$ 和座位 $r$ 上的数字相同;
- 对于所有 $l < i < r$,座位 $i$ 上的数字与座位 $l$ 的数字不同;
满足条件后,小午可以把区间 $(l, r)$ 中所有座位的数字全部改成座位 $l$ 的数字。现在给定最终目标状态 $A_1, A_2, \dots, A_N$,问有多少种不同的操作序列可以将初始状态变成目标状态。
如果两个操作序列满足以下任意条件,则认为它们不同:
- 操作次数不同;
- 或存在某一步操作中选择的 $(l, r)$ 不同。
由于答案可能很大,请对 $998244353$ 取模。
选择两个位置 $l$ 和 $r$(要求 $l + 1 < r$),并满足:
- 座位 $l$ 和座位 $r$ 上的数字相同;
- 对于所有 $l < i < r$,座位 $i$ 上的数字与座位 $l$ 的数字不同;
满足条件后,小午可以把区间 $(l, r)$ 中所有座位的数字全部改成座位 $l$ 的数字。现在给定最终目标状态 $A_1, A_2, \dots, A_N$,问有多少种不同的操作序列可以将初始状态变成目标状态。
如果两个操作序列满足以下任意条件,则认为它们不同:
- 操作次数不同;
- 或存在某一步操作中选择的 $(l, r)$ 不同。
由于答案可能很大,请对 $998244353$ 取模。
输入格式
第一行输入一个整数 $N$,表示座位数量。
第二行输入 $N$ 个整数 $A_1, A_2, \dots, A_N$,表示最终每个座位上的数字。
第二行输入 $N$ 个整数 $A_1, A_2, \dots, A_N$,表示最终每个座位上的数字。
输出格式
输出一个整数,表示能够得到目标状态的不同操作序列数量(对 $998244353$ 取模)。
输入输出样例
输入 #1
6 1 1 1 1 1 0
输出 #1
3
【解释说明】
其中一种操作方式为:
+ 选择 $(2,4)$,得到
1 0 0 0 1 0+ 选择 $(1,5)$,得到
1 1 1 1 1 0除此之外,还有另外两种不同的合法操作序列,因此答案为 $3$。
【数据范围】
对于 $100\%$ 的测试数据,满足:
$1 \le N \le 2 \times 10^5$
$A_i \in \{0,1\}$
C++ 编辑器
输入
输出
可保存默认模板;新题优先使用已保存模板。
当前快捷键仅展示,暂不支持修改。
- 撤销
Ctrl / ⌘ + Z - 重做
Ctrl / ⌘ + Y - 查找
Ctrl / ⌘ + F - 全选
Ctrl / ⌘ + A - 复制
Ctrl / ⌘ + C - 剪切
Ctrl / ⌘ + X - 粘贴
Ctrl / ⌘ + V - 自动排版
工具栏排版按钮 - 草稿保存
编辑时自动保存到本机
历史
提交记录
状态说明时间源码
AI
作答助手
你好,我是作答助手。可以问思路、复杂度、样例含义或代码报错原因;不会直接给出完整 AC 代码。
确定要清空代码吗?