NOIP2016提高A組8 12 禮物

2021-07-16 14:05:03 字數 1159 閱讀 9668

夏川的生日就要到了。作為夏川形式上的男朋友,季堂打算給夏川買一些生日禮物。

商店裡一共有種禮物。夏川每得到一種禮物,就會獲得相應喜悅值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所在的強連通分量塊 那麼就每個強連通分量塊 除...