給出n道題目,每道題目有a[i]個選項
有乙個人知道所有題目的正確選項,但是他把答案全部寫在了第i+1的題目上(第n個題目的答案寫在了第1個題目上)
求出這個人做對題目的期望
期望dp,有一點點水
首先對於a[i-1]和a[i]而言,假設要答對第i道題的話,那麼概率就是min(a[i-1],a[i])/(a[i-1]*a[i])(a[i-1]*a[i]為方案總數)
但是a[i-1]*a[i]會暴int,所以我們簡化為1.0/max(a[t],a[i]),然後沒了
#include#include#include
#include
#include
using
namespace
std;
typedef
long
long
ll;int a[11000000
];double f[11000000
];int
main()
printf(
"%.3lf\n
",f[n]);
return0;
}
BZOJ2134 單選錯位
傳送門 題解 非常簡單。第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 中的乙個選項 ...
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...