[数学记录]AT2705 [AGC019F] Yes or No
command_block · · 个人记录
题意 :有
当你回答一个问题之后,会知道这个问题的答案,求最优策略下期望答对多少。
答案对
-
u>v$ ,猜下一步是 $(u-1,v)$ ,期望收益为 $\binom{u+v}{u} -
将我们猜对的总次数除以
并不容易将三部分分别统计,考虑化简。
不妨设
不难发现,转化后的路径每一步的期望收益都没有变。
且
当
对于点
所以,答案为
#include<algorithm>
#include<cstdio>
#define ll long long
#define MaxN 1000500
using namespace std;
const int mod=998244353;
ll powM(ll a,int t=mod-2){
ll ret=1;
while(t){
if (t&1)ret=ret*a%mod;
a=a*a%mod;t>>=1;
}return ret;
}
ll fac[MaxN],ifac[MaxN];
ll C(int n,int m)
{return fac[n]*ifac[m]%mod*ifac[n-m]%mod;}
void Init(int n)
{
fac[0]=1;
for (int i=1;i<=n;i++)
fac[i]=fac[i-1]*i%mod;
ifac[n]=powM(fac[n]);
for (int i=n;i;i--)
ifac[i-1]=ifac[i]*i%mod;
}
int n,m;
int main()
{
scanf("%d%d",&n,&m);
if (n<m)swap(n,m);
Init(n+m);
ll ret=0;
for (int i=1;i<=m;i++)
ret=(ret+C(2*i,i)*C(n+m-2*i,n-i))%mod;
ret=ret*powM(2*C(n+m,m)%mod)%mod;
printf("%lld",(ret+n)%mod);
return 0;
}