總時間限制: 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 ...