【AGC 019 F】Yes or No

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)(ij) ( j , j ) ( i ≥ j ) ,且中途不经过对角线,那么每次都会猜一样的答案,过程中恰好猜对 ij i − j
那么就是计数题套路,设 f[i] f [ i ] 表示 (i,i) ( i , i ) 的答案,枚举第一个碰到的对角线上的点 (j,j) ( j , j ) ,有

f[i]=j<i(f[ij]+j)Catalan(j) f [ i ] = ∑ j < i ( f [ i − j ] + j ) ∗ C a t a l a n ( j )

可以分治fft计算

任意(n,m)

枚举第一个碰到的 (i,i) ( i , i ) 再根据 f[i] f [ i ] 计算答案

计数学傻了

我们有上面那个性质,任意一条(n,m)到(0,0)的路径一定可以拆成若干不经过对角线的段,每一段都是独立的,所以答案至少为n,只需要对于对角线上的点单独计算即可(猜对概率为0.5)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值