CF2172J Sliding Tiles

题目描述

你有一个特殊的滑动谜题,棋盘为 $n \times n$ 的方格。这种谜题与标准滑动谜题略有不同:每对相邻的两列之间,在底部有一根高度为 $h_i$(对于 $1 \leq i < n$)的竖直阻挡条。每个 $h_i$ 表示该阻挡条从底部向上延伸 $h_i$ 行,在这些行中阻挡两个列之间瓷砖的移动。 棋盘上有若干瓷砖,每个瓷砖恰好占据一个格子。这些瓷砖可以在棋盘上自由滑动,除非被棋盘边界、竖直阻挡条(取决于其高度)或其他瓷砖所阻挡。 该谜题允许两种类型的倾斜操作: - 向右倾斜:所有瓷砖尽可能向右滑动。 - 向下倾斜:所有瓷砖尽可能向下滑动。 在这两种操作中,所有瓷砖同时移动,只有当被棋盘边界、阻挡条或其他瓷砖阻挡时才会停止。 ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF2172J/83ed09c5797f4d28cf6da5292c61ba8cf764fbaabbafce06bd2c7c346f5504d3.png) 图 1:样例输入 1 的说明图。定义一个“组合操作”为:先将棋盘向右倾斜,再向下倾斜。 最初,第 $i$ 列从底部开始堆有 $a_i$ 个瓷砖。你恰好对棋盘执行一次组合操作。操作结束后,求每一列最终剩余的瓷砖数。

输入格式

第一行包含一个整数 $n$,表示棋盘的大小。 第二行包含 $n$ 个整数 $a_1,a_2,\ldots,a_n$,其中 $a_i$ 表示第 $i$ 列最初的瓷砖数量。 第三行包含 $n-1$ 个整数 $h_1,h_2,\ldots,h_{n-1}$,其中 $h_i$ 表示第 $i$ 列和第 $i+1$ 列之间的阻挡条高度。 - $2 \leq n \leq 5 \times 10^5$ - $0 \leq a_i \leq n$ - $0 \leq h_i \leq n-1$

输出格式

输出一行 $n$ 个数字,表示恰好执行一次组合操作后每一列的瓷砖数量。

说明/提示

由 ChatGPT 5 翻译