牛客练习赛 26 B题 烟花【DP】(经典)
<题目链接>
题目描述
小a有$n$个烟花,每个烟花代表着互不相同的颜色,对于第$i$个烟花,它有$p_i$的概率点燃,现在小a要去点燃它们,他想知道产生颜色的期望个数 及 产生恰好产生$k$种颜色的概率。
对于$100%$的数据$(n \leq 10^5 ,k \leq 2 \times 10^2)$输出均保留4位小数,若你的答案误差与std不超过$10^{-4}$即为正确
解题分析:
本题是比较经典的dp,$dp[i][j]$表示前i件物品中产生j件物品的概率,不难想到,状态转移方程为:$dp[i][j] = dp[i-1][j]*(1-p[i])+dp[i-1][j-1]*p[i]$;
意思是:前$i$件物品中产生$j$个颜色的概率为前$(i-1)$个物品产生$j$个颜色*第$i$个物品不产生颜色的概率,加上前$(i-1)$件物品产生$(j-1)$种颜色*第i个物品产生颜色的概率。然后再用滚动数组优化成一维dp即可。
#include <bits/stdc++.h>
using namespace std;
const int N = 1e5+;
double p[N];
double dp[]; //实际上是dp[i][j],只不过下面用了滚动数组,意义是前i个物品产生j中颜色的概率 int main(){
int n,k;
scanf("%d %d",&n, &k);
double ans = ;
for(int i = ; i <= n; i ++) scanf("%lf",&p[i]), ans += p[i]; dp[] = ;
for(int i = ; i <= n; i ++){
for(int j = k;j>=;j--){
dp[j] = dp[j]*(-p[i])+dp[j-]*p[i];
}//前i个物品产生j种颜色的概率为,前i-1个物品产生 j种颜色的概率*第i个物品不产生颜色的概率加上前i-1个物品产生j-1个颜色的概率*第j个物品产生颜色的概率
} printf("%.4f\n%.4lf",ans,dp[k]);
return ;
}
牛客练习赛 26 B题 烟花【DP】(经典)的更多相关文章
- 牛客练习赛 26 C题 城市规划【贪心】
<题目链接> 题目描述 小a的国家里有n个城市,其中第i和第i - 1个城市之间有无向道路连接,特殊的,第1个城市仅与第2个城市相连为了减轻道路维护负担,城市规划局局长MXT给出了m个要求 ...
- 牛客练习赛26:D-xor序列(线性基)
链接:牛客练习赛26:D-xor序列(线性基) 题意:小a有n个数,他提出了一个很有意思的问题:他想知道对于任意的x, y,能否将x与这n个数中的任意多个数异或任意多次后变为y 题解:线性基 #inc ...
- 牛客练习赛52 | C | [烹饪] (DP,裴蜀定理,gcd)
牛客练习赛52 C 烹饪 链接:https://ac.nowcoder.com/acm/contest/1084/C来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 327 ...
- 牛客练习赛44 B题 (思维)
链接:https://ac.nowcoder.com/acm/contest/634/B 来源:牛客网 给出n条线段,第i条线段的长度为ai, 每次可以从第i条线段的j位置跳到第i + 1条线段的j+ ...
- 牛客练习赛26 E-树上路径 (树链剖分+线段树)
链接:https://ac.nowcoder.com/acm/contest/180/E 来源:牛客网 树上路径 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 262144K,其他语 ...
- 牛客练习赛26 D xor序列 (线性基)
链接:https://ac.nowcoder.com/acm/contest/180/D 来源:牛客网 xor序列 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他 ...
- 牛客练习赛38 D 题 出题人的手环 (离散化+树状数组求逆序对+前缀和)
链接:https://ac.nowcoder.com/acm/contest/358/D来源:牛客网 出题人的手环 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 524288K,其他 ...
- 牛客练习赛32 B题 Xor Path
链接:https://ac.nowcoder.com/acm/contest/272/B来源:牛客网 题目描述 给定一棵n个点的树,每个点有权值.定义表示 到 的最短路径上,所有点的点权异或和. ...
- 牛客练习赛51 D题
链接:https://ac.nowcoder.com/acm/contest/1083/D来源:牛客网 有一个草原可以用一个1~400的数轴表示.有n头羊和q个查询.每头羊的编号分别是1,2,3…n. ...
随机推荐
- Jenkins二 安装gitlab及其使用
git --version 如果没有安装git直接源码安装即可,如果安装了先删除原来的git. yum -y remove git先安装编译git需要的包. yum install zlib-deve ...
- Oracle 数据库实例简介
回到顶部 一:Oracle 数据库实例简介 1:数据库实例的启动顺序: 使用数据库其实就是访问内存.即:数据库实例.数据库的启动是顺序是 先 nomount ----> mount --- ...
- Android UiAutomator
UiAutomator是一个做UI测试的自动化框架.<Android自动化测试框架>中已有详细介绍,这里就不再累赘了. 一.首先了解自动化测试流程 自动化需求分析 测试用例设计 自动化框架 ...
- Java的家庭记账本程序(E)
日期:2019.2.9 博客期:032 星期二 今天是把程序的相关Bug补一补,嗯`: 1.添加了跳转说明 生成了一个对于成员的权限声明内容,用户再登陆界面点击Go按钮后,切换至说明页面,再次点击Go ...
- day14 迭代器 生成器 面向过程思想
"" 迭代器 什么是迭代器(iterator) 器指的某种工具, 迭代指的是更新换代的过程,例如应用程序的版本更新从1.0 变成 1.1 再1.2 迭代的目的是要根据上一个结果,产 ...
- 拓展中国剩余定理(ex_crt)
一般来讲,crt(中国剩余定理)比较常见,而ex_crt(拓展中国剩余定理)不是很常用 但是noi 2018偏偏考了这么个诡异的东西... 所以这里写一个ex_crt模板 模型: 求一个x满足上述方程 ...
- Java和C冒泡排序
Java 示例代码: public class test { public static void main(String[] args) { String str = "321dca5&q ...
- 页面注册系统--使用forms表单结合ajax
页面注册系统--使用forms表单结合ajax 在Django中通过forms构建一个表单 1.urls.py 配置路由 from django.conf.urls import url from d ...
- Oracle亿级数据查询处理(数据库分表、分区实战)
大数据量的查询,不仅查询速度非常慢,而且还会导致数据库经常宕机(刚接到这个项目时候,数据库经常宕机o(╯□╰)o). 那么,如何处理上亿级的数据量呢?如何从数据库经常宕机到上亿数据秒查?仅以此篇文章作 ...
- fcagte.exe应用程序错误
原文:What is Fcagte.exe and How To Fix It? Overview of Fcagte.exe What Is Fcagte.exe? Fcagte.exe is a ...