夏川的生日就要到了。作為夏川形式上的男朋友,季堂打算給夏川買一些生日禮物。
商店裡一共有種禮物。夏川每得到一種禮物,就會獲得相應喜悅值wi(每種禮物的喜悅值不能重複獲得)。
每次,店員會按照一定的概率pi(或者不拿出禮物),將第i種禮物拿出來。季堂每次都會將店員拿出來的禮物買下來。
眾所周知,白毛切開都是黑的。所以季堂希望最後夏川的喜悅值盡可能地高。
求夏川最後最大的喜悅值是多少,並求出使夏川得到這個喜悅值,季堂的期望購買次數。
第一行,乙個整數n,表示有n種禮物。
接下來n行,每行乙個實數pi和正整數wi,表示第i種禮物被拿出來的概率和可以獲得喜悅值。
第一行,乙個整數表示可以獲得的最大喜悅值。
第二行,乙個實數表示獲得這個喜悅值的期望購買次數,保留3位小數。
3 0.1 2
0.2 5
0.3 7
14 12.167
對於10%的資料,n = 1
對於30%的資料,n ≤ 5
對於100%的資料,n ≤ 20 ,0 < wi ≤ 10^9 ,0 < pi ≤ 1且∑pi ≤ 1
注意:本題不設spj
看n大小,顯然狀壓dp
轉移方程 fs
=∑f[
s′]∗
pi+(
1−∑p
i)+1
(s=s
′+2i
) 後面那個1-sigema……的意思是售貨員可能不給你買,或者給你買已經賣給過你的,所以∑p
i 表示s包含的所有點的p和
當然,這樣是比較奇怪的,所以移項 ∑p
i∗fs
=fs′
∗pi
接著移項 fs
=fs′
∗pi∑
pi搞定
#include
#include
#define fo(i,a,b) for(int i=a;i<=b;i++)
using
namespace
std;
int n;
double f[1048576],p[21];
int main()
printf("%.3lf",f[(1
<1]);
}
NOIP2016提高A組8 12 通訊
多組資料,檔案以2個0結尾。每組資料第一行,乙個整數n,表示有n個包括總部的部門 從0開始編號 然後是乙個整數m,表示有m條單向通訊線路。接下來m行,每行三個整數,xi,yi,ci,表示第i條線路從xi連向yi,花費為ci。每組資料一行,乙個整數表示達到目標的最小花費。3 3 0 1 100 1 2...
NOIP2016提高A組8 12 通訊
首先處理忽略劃分的情況,如果兩個部門可以直接或間接地相互傳遞訊息,那麼他們一定在同乙個強連通分量之中。就用tarjan縮點。所點後就變成了個有向無環圖,很容易想到,最小花費的方案數選的路線,一定只有n 1條,也就是說每個強連通分量塊的入邊只有乙個 除了0所在的強連通分量塊 那麼就每個強連通分量塊 除...
NOIP2016提高A組8 12 通訊
首先處理忽略劃分的情況,如果兩個部門可以直接或間接地相互傳遞訊息,那麼他們一定在同乙個強連通分量之中。就用tarjan縮點。所點後就變成了個有向無環圖,很容易想到,最小花費的方案數選的路線,一定只有n 1條,也就是說每個強連通分量塊的入邊只有乙個 除了0所在的強連通分量塊 那麼就每個強連通分量塊 除...