AT_agc041_f [AGC041F] Histogram Rooks

题目描述

我们考虑一个有 $N$ 行 $N$ 列的方格网。Arbok 剪掉了网格的一部分,使得对于每个 $i = 1, 2, \ldots, N$,从左往右第 $i$ 列的最底部剩下 $h_i$ 个方格。现在,他想在剩下的某些方格中放置车。 车是一种国际象棋棋子,占据一个格子,可以沿水平方向或垂直方向移动任意步数,只要经过的格子没有被占用。车不能穿过被 Arbok 剪掉的格子。 我们称一个格子被覆盖,当且仅当它本身有车,或者有车能一步移动到该格子。 请你计算有多少种方式可以在剩下的格子中放置车,使得每一个剩下的格子都被覆盖。答案对 $998244353$ 取模。

输入格式

输入从标准输入读入,格式如下: > $N$ > > $h_1$ $h_2$ $...$ $h_N$

输出格式

输出一个整数,表示有多少种放置车的方案,使得每一个剩下的格子都被覆盖。答案对 $998244353$ 取模。

说明/提示

### 数据范围 - $1 \leq N \leq 400$ - $1 \leq h_i \leq N$ - 所有输入值均为整数。 ### 样例解释 1 只要至少放两个车的任意方案都可以。这样的方案共有 $11$ 种。 ### 样例解释 2 以下 $17$ 种放置车的方案满足条件(`R` 表示有车,`*` 表示空格): ``` R * * R * * R R R R R R **R R** R*R R** *R* **R R * R * * R * R * * R R R*R *RR RR* R*R RRR RR* R R R R R * * R R R R*R *RR RRR RRR RRR ``` 由 ChatGPT 4.1 翻译