传统题 3000ms 1024MiB

H 说真话

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

题目描述

给定一个长度为 nn、字符集为 01? 的字符串 s1s2⋯sns_1s_2 \cdots s_n。

对于任意 k∈[1,n]k \in [1,n],考察字符串 Tk=t1t2⋯tnT_k = t_1 t_2 \cdots t_n,其中对于 1≤i≤n1 \le i \le n,

  • 若 si≠s_i \ne ?,则 ti=sit_i = s_i;
  • 否则,若 i≤ki \le k,ti=t_i = 0;
  • 否则 ti=ti−kt_i = t_{i-k},你可以通过递归地算出 ti−kt_{i-k} 得到 tit_i。

容易发现 TkT_k 的字符集为 01。你需要对所有 k∈[1,n]k \in [1,n] 求出 TkT_k 中 1 的个数。

输入格式

输入的第一行一个整数 n(1≤n≤105)n (1 \le n \le 10^5) 表示字符串长度,第二行一个长度为 nn、字符集为 01? 的字符串 s1s2⋯sns_1s_2\cdots s_n。

输出格式

输出 nn 行,第 ii 行一个整数表示 TiT_i 中 1 的个数。

5
10?1?
3
4
2
3
2

说明/提示

T1=T_1 = 10011,T2=T_2 = 10111,T3=T_3 = 10010,T4=T_4 = 10011,T5=T_5 = 10010。

测试

未参加
状态
已结束
规则
IOI
题目
13
开始于
2026-5-7 23:30
结束于
2026-5-28 19:30
持续时间
500 小时
主持人
参赛人数
48