P1297 [Equipo de entrenamiento nacional] Selección única fuera de lugar (expectativa)

Portal de temas

Significado de la pregunta: hay una prueba, un total de nnn preguntas,iiyo sujetoun [i] un [i]a [ i ] opciones, la respuesta correcta puede ser estaa [i] a [i]a [ i ] Cualquiera de las preguntas. Alguien pintó una hoja de respuestas que estaba bien en el lugar equivocado,iiLa respuesta a la pregunta i está pintadai + 1 i + 1I+La posición de la pregunta 1 ,nnn preguntas pintadas en el1er 1Ubicación de 1 pregunta. Pedirle a la hoja de respuestas de la persona que responda la cantidad correcta de preguntas esperadas.

Idea: sabemos que el iiQue la pregunta i se responda correctamente depende únicamente de lai - 1 i-1I-1 Materiaiii Tema Respuesta Pros y contras. Probabilidad Probabilidad opuestamin (a [i], a [i - 1]) a [i] ∗ a [i - 1] \ cfrac {min (a [i], a [i-1])} {a [i ] * a [i-1]}a [ i ]un [ yo-1 ]m i n ( a [ i ] ,un [ yo-1 ] ), 即1 max (a [i], a [i - 1]) \ cfrac {1} {max (a [i], a [i-1])}m a x ( a [ i ] ,un [ yo-1 ] )1, Y juzga i = 1 i = 1I=1 situación. Debido a que las respuestas a cada pregunta son independientes entre sí, la suma de la probabilidad de que cada pregunta sea correcta es la expectativa del número de respuestas correctas.

Código:

#include<bits/stdc++.h>
#define endl '\n'
#define null NULL
#define ls p<<1
#define rs p<<1|1
#define fi first
#define se second
#define mp make_pair
#define pb push_back
#define ll long long
#define int long long
#define pii pair<int,int>
#define ull unsigned long long
#define pdd pair<double,double>
#define lowbit(x) x&-x
#define all(x) (x).begin(),(x).end()
#define sz(x) (int)(x).size()
#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
char *fs,*ft,buf[1<<20];
#define gc() (fs==ft&&(ft=(fs=buf)+fread(buf,1,1<<20,stdin),fs==ft))?0:*fs++;
inline int read()
{
    
    
    int x=0,f=1;
    char ch=gc();
    while(ch<'0'||ch>'9')

    {
    
    
        if(ch=='-')
            f=-1;
        ch=gc();
    }
    while(ch>='0'&&ch<='9')
    {
    
    
        x=x*10+ch-'0';
        ch=gc();
    }
    return x*f;
}
using namespace std;
const int N=1e7+55;
const int inf=0x3f3f3f3f;
const int mod=998244353;
const double eps=1e-6;
const double PI=acos(-1);

int a[N];
signed main()
{
    
    
    int n,A,B,C;
    cin>>n>>A>>B>>C>>a[1];

    for(int i=2;i<=n;i++){
    
    
        a[i]=(a[i-1]*A+B)%100000001;
    }
    for(int i=1;i<=n;i++){
    
    
        a[i]=a[i]%C+1;
    }
    double res=0;
    for(int i=2;i<=n;i++){
    
    
        res+=1.0/max(a[i],a[i-1]);
    }
    res+=1.0/max(a[1],a[n]);
    printf("%.3f\n",res);


    return 0;
}

Supongo que te gusta

Origin blog.csdn.net/Joker_He/article/details/110149451
Recomendado
Clasificación