3731: 座位(第六轮01)

内存限制:256 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:1 解决:1

题目描述

受疫情影响,大家在就餐的时候需要隔位就坐。

给定一个长度为τ 的01串,1表示已经有人在此就坐并开始就餐,0表示无人就坐。 为最大化就餐人数,你需要在保证隔位就坐的前提下尽可能多的安排座位。

请你计算一下有多少种方案满足要求。

输入

第一行,包含一个正整数τ。

第二行, 一个长度为τ 的01串,表示目前的就坐情况。

输出

共一行,包含一个非负整数,表示方案数。

由于方案数可能会很大,你需要输出方案数对998244353取模后的值。

样例输入 复制

3
010

样例输出 复制

1

提示

【样例 1 输入】

3

010

【样例 1 输出】

1

【样例 1 说明】

虽然无法分配座位,但是这仍然是一种方案。

【样例 2 输入】

4

1001

【样例 2 输出】

1

【样例 2 说明】

显然中间的空座位无论如何分配都不能保证间隔就做。

【样例 3 输入】

5

10001

【样例 3 输出】

1

【样例 3 说明】

给第三个位置分配一个人就坐,可以最大化用餐人数。

【样例 4  输入】

6

100001

【样例 4  输出】

2

【样例 4  说明】

给第三个位置或者第四个位置分配一个人就坐,可以最大化用餐人数,方案数为 2。

【样例 5 输入】

3

111

【样例 5 输出】

0

【样例 5 说明】

目前的就坐情况已经不满足间隔就坐要求,方案数为 0。

【样例 6 输入】

20

00000001000000010000

【样例 6 输出】

4

【样例 7 输入】

50

00000000010000000000000001000000000000100000001000

【样例 7 输出】

60

【样例 8 输入】

100

00000000010000000000000001000000000000100000001000000000000100000

00100000001000000000000100000001000

【样例 8 输出】

2160

【数据范围】

对于100%的数据: 3 ≤ n ≤ 300000。

本题共有10个测试点,部分测试点满足以下性质:

测试点1:n ≤ 15。

测试点2:字符串至多有 15个位置为0,其余位置为1。

 测试点3:字符串只包含0。

测试点4:字符串只包含1。

测试点5:字符串只包含1个1。 测试点6:字符串只包含2个1。


来源/分类