P1297 [国家集训队]单选错位

传送门

对每一题单独考虑它的做对期望,设一题的选项数为 $p[i]$,然后对 $p[i]$ 和 $p[i-1]$ 的大小关系进行一波分类讨论并化简

然后发现 每题的期望就是 $1/max(p[i],p[i-1])$

把每题的期望加起来就是答案了

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>
using namespace std;
typedef long long ll;
inline int read()
{
    int x=0,f=1; char ch=getchar();
    while(ch<'0'||ch>'9') { if(ch=='-') f=-1; ch=getchar(); }
    while(ch>='0'&&ch<='9') { x=(x<<1)+(x<<3)+(ch^48); ch=getchar(); }
    return x*f;
}
const int N=2e7+7;
int n,A,B,C,a[N];
double ans;
int main()
{
    scanf("%d%d%d%d%d",&n,&A,&B,&C,a+1);
    for (int i=2;i<=n;i++)
    a[i] = ((long long)a[i-1] * A + B) % 100000001;
    for (int i=1;i<=n;i++)
    a[i] = a[i] % C + 1;
    for(int i=2;i<=n;i++) ans+=1.0/max(a[i],a[i-1]); 
    ans+=1.0/max(a[1],a[n]);
    printf("%.3lf",ans);
    return 0;
}
原文地址:https://www.cnblogs.com/LLTYYC/p/10626417.html