3950: 01串(ab)

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

题目描述

小 L 最近在研究 $01$ 串,一个长度为 $n$ 的 $01$ 串,每一位都是 $0$ 或 $1$。 现在你可以将串划分成不重不漏的 $m$ 个子段,并可以将这些子段任意重新排列,得到一个新的 $01$ 串。 现在定义一个 $01$ 串的收益是他的最长不降子序列,你需要求出所有划分并重排的方案中,收益最大的串的收益。 但是小 L 还没有想清楚到底要划分多少段,所以你需要对于每个 $m\in[1,n]$ 
求出对应答案。

 数据范围与约定 
对于 $100\%$ 的数据,保证 $n\le 3\times 10^5$。 - subtask1($5$ 分): $n\leq 20$。 - subtask2($15$ 分):$n\le 200$。 - subtask3($25$ 分):$n\leq 2000$。 - subtask4($55$ 分):无特

输入

第一行一个正整数 $n$。 第二行一个长度为 $n$ 的 $01$ 串,保证每一位都是 $0$ 或 $

输出

输出一行 $n$ 个正整数,第 $i$ 个数表示 $m=i$ 时的最大收益。相邻两个数之间用一个空格隔开。

样例输入 复制

10
0010110001

样例输出 复制

7 8 9 9 10 10 10 10 10 10

提示

样例输入 

20 10100010101010100111 
样例输出 2 
13 14 14 15 15 16 16 17 17 18 18 19 19 20 20 20 20 20 20 20