牛客NC18200烟花

2022-07-24 14:09:25 字數 914 閱讀 2037

總時間限制: 1000ms

記憶體限制: 262144k

小a有n個烟花,每個烟花代表著互不相同的顏色,對於第i個烟花,它有pi的概率點燃,現在小a要去點燃它們,他想知道產生顏色的期望個數及產生恰好產生k種顏色的概率

第一行兩個整數n,k.接下來一行n個數,第i個數pi表示第i個烟花被點燃的概率

輸出有兩行

第一行表示產生不同顏色的期望個數

第二行表示產生恰好k種顏色的概率

以換行符分割

3 20.5 0.25 0.75

1.5000

0.4062

牛客網#include 

#include 

#include 

#include 

#include 

#include 

#define xin(a) scanf("%d", &a)

using namespace std;

const int maxn = 10000 + 5;

double dp[maxn][maxn];//到i個時已點燃j個;

int main()

dp[0][0]=1;

dp[0][1]=0;

for(i=1;i<=n;i++)

printf("%.4f\n%.4f\n",sum,dp[n][k]);

return 0;

}第一次看到概率dp吼吼,第一問直接相加,第二問用dp解決,dp[i][j]表示到第i個時已經點燃j個的概率,

dp[i][j]=dp[i-1][j-1]*a[i]+dp[i-1][j]*(1-a[i]);

dp[i-1][j-1]*a[i]表示當前烟花點燃的概率,j+1.

dp[i-1][j]*(1-a[i]);表示當前烟花未點燃

特別注意dp[i][0]需要特別處理

烟花 牛客練習賽26

此題鏈結 上 include include include using namespace std int main f o 1 p 0 f o 0 1 p 0 for int i 2 i n i printf 4lf n 4lf sum,f o k 第一問高中知識便可搞定 第二問要用到滾動陣列和...

牛客 NC15553 數學考試

思路 先把字首和求出來.類似於dp,當前節點為i的時候,我們要記錄下i之前的連續k個數和的最大值lmax.這就是第一段 然後讓j i k,讓rmax a j a i 這樣然後max max max,lmax rmax 這樣的複雜度是o n 看 include include include incl...

KMP 牛客 NC13253 子串

題目描述 給出乙個正整數n,我們把1 n在k進製下的表示連起來記為s n,k 例如s 16,16 123456789abcdef10,s 5,2 11011100101。現在對於給定的n和字串t,我們想知道是否存在乙個k 2 k 16 使得t是s n,k 的子串。輸入描述 第一行乙個整數n 1 n ...