CF2121G.Gangsta
普及+/提高
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
给定一个长度为 n 的二进制字符串 s1s2…sn。一个字符串被称为二进制字符串当且仅当它只包含 0 和 1。
对于一个字符串 p,我们定义函数 f(p) 为字符串 p 中某个字符出现次数的最大值。例如,f(00110)=3,f(01)=1。
你需要计算所有满足 1≤l≤r≤n 的区间 [l,r],即所有子串 slsl+1…sr 的 f(slsl+1…sr) 之和。
输入格式
每个测试点包含多组测试数据。第一行包含一个整数 t(1≤t≤104),表示测试用例的数量。接下来是每个测试用例的描述。
每个测试用例的第一行包含一个整数 n(1≤n≤2⋅105),表示二进制字符串的长度。
每个测试用例的第二行包含一个长度为 n 的字符串 s,仅由 0 和 1 组成,即二进制字符串 s。
保证所有测试用例中 n 的总和不超过 2⋅105。
输出格式
对于每个测试用例,输出所有区间 [l,r] 的 f(slsl+1…sr) 之和。
输入输出样例
输入#1
6 1 0 2 01 4 0110 6 110001 8 10011100 11 01011011100
输出#1
1 3 14 40 78 190
说明/提示
在第一个测试用例中,字符串 s 只有一个子串,f(0)=1。
在第二个测试用例中,字符串 s 的所有子串为 0、01、1,答案分别为 1+1+1=3。
在第三个测试用例中,字符串 s 的所有子串为 0、01、011、0110、1、11、110、1、10、0,答案分别为 1+1+2+2+1+2+2+1+1+1=14。
由 ChatGPT 4.1 翻译
输入解题思路,AI测评打分。不知道怎么写?