i個人有pip
i的概率會選擇1,否則選擇0。求在n
n個人中選擇m
m個,1和0的個數相等的期望。30p
ts30
ptso
(3n)
o(3n
)暴力搜尋每乙個人是不選,選1還是選0。用狀壓記錄每一種選擇方案的概率。
空間複雜度o(2
n)o(
2n)。
好像o(4n
)o(4
n)還可以拿40pt
s40p
ts。**lin
klin
k100pt
s100
pts將p
ipi
排序,如果此時最有方案中存在乙個選擇的人,他左右均有人且都沒有被選擇,那麼固定其他選擇的人,在剩餘的人中選擇,期望一定為乙個一次函式。所以這個人肯定王左或往右會更優。
所以設f[i
][j]
f[i]
[j]表示在[1,
i][1
,i]中選擇j
j個人選擇1,g[i
][j]
g[i]
[j]表示在[i,
n][i
,n]中選擇j
j個人選擇1。以ff
為例,如果這乙個位置選擇0,那麼f[i
][j]
=f[i
−1][
j−1]
×(1−
p[i]
)f[i
][j]
=f[i
−1][
j−1]
×(1−
p[i]
),如果這乙個位置選擇1,那麼f[i
][j]
=f[i
−1][
j−1]
×p[i
]f[i
][j]
=f[i
−1][
j−1]
×p[i
]。所以方程就是f[
i][j
]=f[
i−1]
[j]×
(1−p
[i])
+f[i
−1][
j−1]
×p[i
]f[i
][j]
=f[i
−1][
j]×(
1−p[
i])+
f[i−
1][j
−1]×
p[i]
最後列舉前面選多少人,以及前面幾個人選1,計算一下答案即可。
時間複雜度o(n
m)o(
nm)
#include
#include
using
namespace std;
const
int n=
2010
;double p[n]
,f[n]
[n],g[n]
[n],ans,maxn;
int n,m;
intmain()
for(
int i=n;i>=
1;i--
)for
(int j=
0;j<=m;j++
)for
(int i=
0;i<=m;i++
)printf
("%0.8lf"
,maxn)
;return0;
}
每日一題6 29
問題 given a sorted array nums,remove the duplicates in place do not allocate extra space for another array,you must do this by modifying the input arra...
6 29 題目及答案解析
1 專案經理發現乙個新風險,可能影響專案進度計畫。專案經理首先應該做什麼?a.建立減輕和應急計畫 b.確定風險的概率和影響 c.安排一次團隊會議 d.確定如何監督風險 答案 b。具體解析 該題考察了11.7監督風險中的風險識別。按照風險流程,識別風險後先進行定性風險分析,評估風險的概率和影響以及其他...
NOI2017模擬6 29 呵呵
考慮乙個特定形態的樹的貢獻,設點i的度數為d i 那麼答案就是 wdii?di 考慮prufer序,乙個度數為d i 的點出現的次數是d i 1,那麼就可以得到乙個很顯然的dp,f i j 表示前i個點的度數為i j fi,j d 0jfi?1,j?d?dn?2?j?d wd 1i?d 1 這個dp...