Description
有n+m个问题,其中n个的答案是YES,m个的答案是NO,你现在从前往后回答问题,按照最优策略猜答案,回答完当前问题后你会知道这个问题的答案,问期望答对的题目的数量
n,m<=500000
部分分:n=m
Analysis
bruteforce
设还剩i个YES,j个NO
显然最优策略为猜剩余多的那个,即猜对概率为max(i,j)/(i+j),这样n^2dp显而易见
然而貌似有一种猎奇思路
n=m
部分分启示思考
放入格路径中考虑,
(n,m)
(
n
,
m
)
表示n,m的答案,注意到一个性质:如果从
(i,i)
(
i
,
i
)
走到
(j,j)(i≥j)
(
j
,
j
)
(
i
≥
j
)
,且中途不经过对角线,那么每次都会猜一样的答案,过程中恰好猜对
i−j
i
−
j
个。
那么就是计数题套路,设
f[i]
f
[
i
]
表示
(i,i)
(
i
,
i
)
的答案,枚举第一个碰到的对角线上的点
(j,j)
(
j
,
j
)
,有
可以分治fft计算
任意(n,m)
枚举第一个碰到的 (i,i) ( i , i ) 再根据 f[i] f [ i ] 计算答案
计数学傻了
我们有上面那个性质,任意一条(n,m)到(0,0)的路径一定可以拆成若干不经过对角线的段,每一段都是独立的,所以答案至少为n,只需要对于对角线上的点单独计算即可(猜对概率为0.5)