CF2106F.Goblin
普及+/提高
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
TC 博士有一位新病人叫哥布林。他想测试哥布林的智力,但对标准测试感到厌倦了,于是决定增加难度。
首先,他创建一个长度为 n 的二进制字符串∗ s。然后,他创建 n 个二进制字符串 a1,a2,…,an。已知 ai 是通过先复制 s,再翻转第 i 个字符(1 变为 0,反之亦然)得到的。创建完所有 n 个字符串后,他将它们排列成一个 n×n 的网格 g,其中 gi,j=aij。
一个大小为 k 的集合 S 被认为是好的,如果它满足以下条件:
- 对于所有 1≤i≤k,有 1≤xi,yi≤n;
- 对于所有 1≤i≤k,有 gxi,yi=0;
- 对于任意两个整数 i 和 j(1≤i,j≤k),坐标 (xi,yi) 可以通过一系列相邻的(共享一条边的)值为 0 的单元格到达 (xj,yj)。
哥布林的任务是找出一个好的集合 S 的最大可能大小。由于 TC 博士很慷慨,这次给了他两秒而不是一秒来找出答案。哥布林以不诚实著称,所以他请你帮他作弊。
∗ 二进制字符串是指仅由字符 1 和 0 组成的字符串。
输入格式
输入的第一行包含一个整数 t(1≤t≤103)——测试用例的数量。
每个测试用例的第一行包含一个整数 n(1≤n≤2⋅105)——二进制字符串 s 的长度。
每个测试用例的第二行包含一个长度为 n 的二进制字符串 s。
保证所有测试用例的 n 之和不超过 2⋅105。
输出格式
对于每个测试用例,输出一个数字,表示网格中好的单元格集合的最大可能大小。
输入输出样例
输入#1
6 3 000 4 0010 7 1011001 4 0001 2 11 1 0
输出#1
3 9 10 7 1 0
说明/提示
在第一个示例中,网格如下:
1 0 0
0 1 0
0 0 1
由单元格 (1,2) 和 (1,3) 组成的集合是好的。由单元格 (1,1) 和 (1,2) 组成的集合不是好的,因为单元格 (1,1) 的值不是 0。由单元格 (1,2)、(1,3) 和 (2,3) 组成的集合是好的,且最大大小为 3。注意,由单元格 (2,1)、(3,1) 和 (3,2) 组成的集合也是好的,最大大小同样为 3。
在第二个示例中,网格如下:
1 0 1 0
0 1 1 0
0 0 0 0
0 0 1 1
好的集合的最大可能大小为 9。
翻译由 DeepSeek V3 完成
输入解题思路,AI测评打分。不知道怎么写?