题解:P15211 [NWERC 2025] Erratic Lights
link
Solution
考虑三个颜色的灯泡的数量排序后为
我们可以对
假设变完后加了
在这之后,我们可以把
,所以总期望次数为:
,我怕组合数的计算过程中会爆 __int128,所以我用了 python。
Code
:::success[code]
n=int(input())
s=input()
def A(x,y):
c=1
for i in range(y-x+1,y+1):
c*=i
return c;
def C(x,y):
if x==0:
return 1
else:
return A(x,y)//A(x,x)
r=0
g=0
cntb=0
for i in range(n):
if s[i]=='r':
r+=1
elif s[i]=='g':
g+=1
else:
cntb+=1
ans=0
a,b,c=min([r,g,cntb]),r+g+cntb-min([r,g,cntb])-max([r,g,cntb]),max([r,g,cntb])
for i in range(a+1):
d=C(i,a)*3*min([b+i,c+(a-i)])
ans+=d;
ans/=(1<<a)
ans+=a*1.5
print(ans)
:::