题解 P4773 【红鲤鱼与绿鲤鱼】
本题是个数学题,情况总数为重排列数,即
由题意可得,无论哪种情况,总会用完所有鲤鱼,则红鲤鱼的罚时必定会全部累加,最后也必定为1次AC,则罚时总值为
我们来考虑前面的绿鲤鱼,我们可以知道,绿鲤鱼记录的时间之与它所处的位置有关,证明可得,绿鲤鱼在每一个位置上的次数是相同的。次数为
则我们可以利用高斯公式求出等差数列,再加上之前算出的罚时,即可求出最终罚时总值。
除以情况数,并约分得期望值为
可得分母只有2这一种情况,预处理2的取模情况即可。
#include<iostream>
#include<iomanip>
#include<cstdio>
#include<cstring>
using namespace std;
long long ans,a,b;
const long long p=499122427;
int main()
{
scanf("%lld%lld",&a,&b);
ans=(5*((4*(a%998244853))%998244853+(2*(b%998244853))%998244853+2+(b%998244853)*(1+(a%998244853)+(b%998244853))))%998244853;
if(ans%2==0)
{
printf("%lld",ans/2);
}
else printf("%lld",(ans*p)%998244853);
}