#P13960. [2024多校联盟省选模拟]划分

    ID: 13172 传统题 2000ms 1024MiB 尝试: 2 已通过: 1 难度: 8 上传者: 标签>CF2400贪心字符串数学动态规划前缀和构造

[2024多校联盟省选模拟]划分

题目描述

给定一个长度为 nn 的 01 串,请把它划分为尽量少的连续段,满足:

  • 每段内 1 的个数都是奇数
  • 每段的长度不超过 mm

但你需要对 所有 m[1,n]m\in[1,n] 分别求出最少段数(或判断无解)。


输入格式

本题多组数据:

  • 第一行是数据组数 TT
  • 对于每组数据:输入一个 01 串(其长度为 nn)。

输出格式

对每组数据输出一行 nn 个整数,用空格隔开:

  • ii 个数表示 m=im=i 时的最少段数;
  • 若无解输出 -1

输出量较大,请使用快速输出方式。


4
01101
0000
11111
1101001
-1 3 3 3 1
-1 -1 -1 -1
5 5 3 3 1
-1 4 4 2 2 2 2

样例解释

[l,r][l,r] 表示把 al,al+1,,ara_l,a_{l+1},\dots,a_r 划为一段。

对第一组测试数据:

  • m=1m=1 时不存在合法划分;
  • m=2,3,4m=2,3,4 时可划分为 [1,2],[3,3],[4,5][1,2],[3,3],[4,5]
  • m=5m=5 时可划分为 [1,5][1,5]

对第四组测试数据:

  • m=2m=2 时可划分为 [1,1],[2,3],[4,5],[6,7][1,1],[2,3],[4,5],[6,7]
  • m=4m=4 时可划分为 [1,4],[5,7][1,4],[5,7]; 且可以证明不存在更优解。

数据范围与提示

对所有数据:

  • 1T1041\le T\le 10^4
  • 1n1061\le n\le 10^6
  • 单个测试点中 nn 的总和不超过 2×1062\times 10^6

测试点分布(按题面整理):

测试点编号 单点 nn 上界 单点 n\sum n 上界
1 8\le 8 103\le 10^3
2–4 300\le 300
5–10 104\le 10^4 2×104\le 2\times 10^4
11–14 6×104\le 6\times 10^4 1.2×105\le 1.2\times 10^5
15–19 3×105\le 3\times 10^5 6×105\le 6\times 10^5
20–25 106\le 10^6 2×106\le 2\times 10^6