BZOJ2134 單選錯位

2021-08-01 09:14:20 字數 824 閱讀 5906

傳送門

題解:非常簡單。

第i+1道題作對的概率,是

1)第i道題選擇了1~a(i+1)中的乙個選項,並且作對了i+1題。

2)若ai>a(i+1) 第i道題選擇了a(i+1)+1~ai中的乙個選項並做對了i+1題。顯然這部分概率為0。

如果ai>a(i+1),那麼「第i道題選擇了1~a(i+1)中的乙個選項」的概率是ai/a(i+1)。

否則ai<=a(i+1),「第i道題選擇了1~a(i+1)中的乙個選項」的概率就是1.

綜合起來就是min(ai,a(i+1))/ai。

在「第i道題選擇了1~a(i+1)中的乙個選項」的前提下,作對i+1題的概率為1/(a(i+1))。

那麼根據貝葉斯公式,p(作對i+1題)=p(第i道題選擇了1~a(i+1)中的乙個選項)*p(在第i道題選擇了1~a(i+1)中的乙個選項的前提下作對第i+1題)

因此p(i+1)=min(ai,a(i+1))/ai*1/a(i+1)=min(ai,a(i+1))/(ai*a(i+1))

經過化簡p(i+1)=1/max(ai,a(i+1))。

所以o(n)掃一遍即可。

//bzoj 2134

#include#include#include#include#define lint long long

#define mod 100000001

#define maxn 10000010

using namespace std;

int a[maxn];

double ans;

int main()

BZOJ2134 單選錯位

給出n道題目,每道題目有a i 個選項 有乙個人知道所有題目的正確選項,但是他把答案全部寫在了第i 1的題目上 第n個題目的答案寫在了第1個題目上 求出這個人做對題目的期望 期望dp,有一點點水 首先對於a i 1 和a i 而言,假設要答對第i道題的話,那麼概率就是min a i 1 a i a ...

BZOJ 2134 單選錯位 期望

第i個填到第i 1個的期望得分顯然是1 max a i a i 1 根據期望的線性性,我們只需將每個選項的期望值累加即可.include using namespace std typedef long long ll const int maxn 10000009 int a maxn int m...

bzoj2134 單選錯位 期望

題目描述 輸入n很大,為了避免讀入耗時太多,輸入檔案只有5個整數引數n,a,b,c,a1,由上交的程式產生數列a。下面給出pascal c c 的讀入語句和產生序列的語句 預設從標準輸入讀入 for pascal readln n,a,b,c,q 1 for i 2 to n do q i int6...