C. 谁擦的黑板

    传统题 1000ms 256MiB

谁擦的黑板

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

题目描述

你在黑板上写了一个长度为 n 的字符串。字符串中的字符只有两种,要么是 0 ,要么是 1

字符串有一个代价,计算方式如下:

假如把 1 看成隔板,则字符串被分隔成一段一段连续的 0

我们称一段连续的 0 为一个 Zero 串。

如果一个 Zero 串中 0 的个数为 k,则该 Zero 串的得分为 k2k^2

字符串的代价就是其中所有的 Zero 串的得分之和。

例如:0001100001 的代价就是 32+42=9+16=253^2+4^2=9+16=25

后来,不知道谁擦黑板,把其中的一些字符给擦掉了。

被擦掉的地方可能是 0,也可能是 1

遗憾的是,你已经记不清自己开始到底写的是什么了。

我们只好认为这些被擦掉的字符,有一半的可能是 0 ,有一半的可能是 1

那么这个字符串的期望代价是多少呢?

输入格式

第一行:一个整数 n,表示字符串的长度

接下来一行:一个字符串,每个字符要么是 0 ,要么是 1,要么是 ? (表示被擦掉的字符)。

输出格式

一个实数,表示期望代价,四舍五入保留 4 位小数。

样例输入1

5
00?11

样例输出1

6.5000

样例1解释

00?11

? 是 0:00011 ===> 32=93^2=9

? 是 1:00111 ===> 22=42^2=4

期望 = (9+4)/2 = 6.5000

样例输入2

4
????

样例输出2

4.1250

数据规模

n<=300000

2025-06-10

未参加
状态
已结束
规则
OI
题目
6
开始于
2025-6-10 7:30
结束于
2025-6-12 9:30
持续时间
50 小时
主持人
参赛人数
4