编程题
### 问题描述 小蓝和他的朋友在玩游戏。在游戏中,有 $n$ 个玩家,第 $i$ 个玩家的血量是 $i$。 环境的类型表示为 $0$ 或 $1$。当两个玩家在类型是 $0$ 的环境中战斗时,其中血量较低的玩家总是获胜;在类型是 $1$ 的环境中战斗时,其中血量较高的玩家总是获胜。环境的类型构成一个长度为 $n−1$ 的字符串 $s$。 如果有 $x$ 个玩家参与游戏,那么总共会有 $x−1$ 次战斗,$x−1$ 个环境的类型将是 $s$ 的前 $x−1$ 个字符。当比赛中剩下的玩家不止一个时,选择剩下的任何两个玩家进行战斗。输掉比赛的选手将被淘汰出局。第 $i$ 场战斗的环境类型是 $s$i。 对于从 $2$ $\sim$ $n$ 的每一个 $x$,问:如果所有血量不超过 $x$ 的玩家都参加比赛,有多少玩家有机会获胜? ### 输入格式 第一行包含一个的整数 $n$,表示玩家的数量。 第二行包含一个长度为 $n−1$ 的二进制字符串 $s$。 ### 输出格式 输出仅一行,包含 $n−1$ 个整数,表示对于从 $2$ $\sim$ $n$ 的每个 $x$,输出有机会获胜的玩家数量。 ### 样例输入 ```text 4 001 ``` ### 样例输出 ```text 1 1 3 ``` ### 说明 在样例中,对于 $x=2$ 和 $x=3$,只有温度值为 $1$ 的玩家可以成为赢家。 对于 $x=4$,温度值为 $2,3,4$ 的玩家可以成为赢家。 ### 评测数据规模 对于 $40$% 的评测数据,$1\leq n \leq 3\times 10^3$。 对于 $100$% 的评测数据,$1\leq n \leq 3\times 10^5$。
查看答案
赣ICP备20007335号-2