传统题 1000ms 256MiB

逆序对

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

题目描述

有一个长度为 nn 的整数序列 a1,a2,,ana_1, a_2, · · · , a_n,序列中的整数只有 0011,但序列中有些位置上的元素还没 有被确定。 现在你想往序列中未被确定的位置填入 00 或者 11,使得其逆序对数最大。 一个序列 a1,a2,,ana_1, a_2, · · · , a_n 的逆序对数定义为,满足 1i<jn1 ≤ i < j ≤ n 并且 ai>aja_i > a_j 的整数数对 i,ji, j 的个数。

输入格式

第一行一个正整数 T(1T104)T (1 ≤ T ≤ 10^4 ),表示数据组数。

对于每组数据,第一行一个整数 n(2n106)n (2 ≤ n ≤ 10^6 ),表示序列长度。

第二行一个长度为 nn 仅由 0,1,?0, 1, ? 构成的字符串 ss 表示序列,其中第 ii 个字符 sis_i?? 表示序列中 aia_i 未知待填充,否则表示 aia_i。 保证单个测试点内每组数据中 nn 的和不超过 2×1062 × 10^6。

输出格式

对于每组数据,一行一个整数,表示最大的逆序对数。

输入样例:

4
3
110
3
1?0
4
????
7
1?0?0?1

输出样例:

2
2
4
8

Note

对于第一组样例,110110 的逆序对数为 22。

对于第二组样例,可以填充为 100100110110,逆序对数均为 22。

对于第三组样例,可以填充为 11001100,逆序对数为 44。

对于第四组样例,可以填充为 1100001110000111010011101001,逆序对数均为 88。

思维题

未参加
状态
已结束
规则
IOI
题目
7
开始于
2025-6-13 14:00
结束于
2025-6-13 17:00
持续时间
3 小时
主持人
参赛人数
3