【每日一题】32. 比赛 (DFS / 概率DP)
补题链接:Here
【方案一:DFS】
首先我们可以计算出每道题做不出来的概率 \(unsolve[i] = (1 - a[i])(1- b[i])(1 - c[i])\)
然后因为只有 12 道题, 每道题要么做对要么做错, 我们可以做 \(DFS\)
当前做对的题数小于 \(need\) 的时候, 我们可以往对和不对的方向搜索
如果做对的题数等于 \(need\) , 那么我们只能往不对的方向搜索
const int N = 110;
double a[N], b[N], c[N];
double unsolve[N];
double ans;
void dfs(int pos, int now, int need, double p) {
if (pos == 13) {
if (now == need) ans += p;
return ;
}
if (now < need)dfs(pos + 1, now + 1, need, p * (1 - unsolve[pos]));
dfs(pos + 1, now , need, p * unsolve[pos]);
}
void solve() {
for (int i = 1; i <= 12; ++i)cin >> a[i];
for (int i = 1; i <= 12; ++i)cin >> b[i];
for (int i = 1; i <= 12; ++i)cin >> c[i];
for (int i = 1; i <= 12; ++i)
unsolve[i] = (1 - a[i]) * (1 - b[i]) * (1 - c[i]);
for (int i = 1; i <= 13; ++i) {
ans = 0;
dfs(1, 0, i - 1, 1);
cout << fixed << setprecision(6) << ans << "\n";
}
}
【方案二:概率 \(dp\) 】
这道题还可以用概率 \(dp\) 来做
令 \(dp[i][j]\) 表示做到第 ii 道题的时候做对 jj 道的状态
显然有 \(dp[i][j] = dp[i - 1][j] * unsolve[i] + dp[i - 1][j - 1] * (1 - unsolve[i])\)
注意初始化 \(dp[0][0] = 1\)
const int N = 105 + 5;
double a[N], b[N], c[N];
double unsolve[N];
double dp[15][15];
void solve() {
for (int i = 1; i <= 12; ++i)cin >> a[i];
for (int i = 1; i <= 12; ++i)cin >> b[i];
for (int i = 1; i <= 12; ++i)cin >> c[i];
for (int i = 1; i <= 12; ++i)
unsolve[i] = (1 - a[i]) * (1 - b[i]) * (1 - c[i]);
dp[0][0] = 1;
for (int i = 1; i <= 12; ++i) {
dp[i][0] = dp[i - 1][0] * unsolve[i];
for (int j = 1; j <= i; ++j)
dp[i][j] = dp[i - 1][j] * unsolve[i] + dp[i - 1][j - 1] * (1 - unsolve[i]);
}
for (int i = 0; i <= 12; ++i)
cout << fixed << setprecision(6) << dp[12][i] << "\n";
}
【每日一题】32. 比赛 (DFS / 概率DP)的更多相关文章
- 【每日一题】【DFS+存已加的值】2022年2月27日-二叉树根节点到叶子节点的所有路径和
描述给定一个二叉树的根节点root,该树的节点值都在数字0−9 之间,每一条从根节点到叶子节点的路径都可以用一个数字表示.1.该题路径定义为从树的根结点开始往下一直到叶子结点所经过的结点2.叶子节点是 ...
- 【每日一题】【DFS和回溯的区别】【BFS】104. 二叉树的最大深度-211227/220218
给定一个二叉树,找出其最大深度. 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数. 说明: 叶子节点是指没有子节点的节点. 示例:给定二叉树 [3,9,20,null,null,15,7], ...
- 【每日一题】【DFS&每个点都调用一次前后左右】由1连接的岛屿数量-211031/220216
给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量. 岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成. 此外,你可以假设该网格的四条边 ...
- 【每日一题】【DFS】2022年1月5日-543. 二叉树的直径
给定一棵二叉树,你需要计算它的直径长度.一棵二叉树的直径长度是任意两个结点路径长度中的最大值.这条路径可能穿过也可能不穿过根结点. 答案: /** * Definition for a binary ...
- 【每日一题】【DFS/回溯】2022年1月1日-113. 路径总和 II
给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径. 叶子节点 是指没有子节点的节点. 来源:力扣(LeetCode)链接 ...
- 【每日一题】【DFS】【BFS】【队列】2021年12月5日-199. 二叉树的右视图
解答: /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * ...
- 【每日一题】【dfs重载原始函数&循环/函数结束条件&左右下标在数组中位置的确定】2022年2月7日-NC12 由先序和中序遍历重建二叉树
描述给定节点数为 n 的二叉树的前序遍历和中序遍历结果,请重建出该二叉树并返回它的头结点.例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建 ...
- [转]概率DP总结 by kuangbin
概率类题目一直比较弱,准备把kuangbin大师傅总结的这篇题刷一下! 我把下面的代码换成了自己的代码! 原文地址:http://www.cnblogs.com/kuangbin/archive/20 ...
- HDU 3366 Passage (概率DP)
题意:T组测试数据,一个人困在了城堡中,有n个通道,m百万money ,每个通道能直接逃出去的概率为 P[i] ,遇到士兵的概率为 q[i], 遇到士兵得给1百万money,否则会被杀掉,还有 1-p ...
- 【JavaScript】【dp】Leetcode每日一题-解码方法
[JavaScript]Leetcode每日一题-解码方法 [题目描述] 一条包含字母 A-Z 的消息通过以下映射进行了 编码 : 'A' -> 1 'B' -> 2 ... 'Z' -& ...
随机推荐
- 神经网络入门篇之深层神经网络:详解前向传播和反向传播(Forward and backward propagation)
深层神经网络(Deep L-layer neural network) 复习下前面的内容: 1.逻辑回归,结构如下图左边.一个隐藏层的神经网络,结构下图右边: 注意,神经网络的层数是这么定义的:从左到 ...
- JAVAweek7
本周学习[函数][数组] 什么是函数: 函数就是定义在类中的具有特定功能的一段独立小程序.函数也称为方法. 函数的格式: ·修饰符 返回值类型 函数名(参数类型 形式参数) { 执行语句: retur ...
- Pycharm 2022 取消双击 shift 搜索框
Pycharm取消双击shift搜索框 基于PyCharm 2022.3.2 (Professional Edition),旧版本修改方式自行搜索 双击shift弹出搜索框,输入内容double mo ...
- 深入理解HarmonyOS UIAbility:生命周期、WindowStage与启动模式探析
本文分享自华为云社区<深入理解HarmonyOS UIAbility:生命周期.WindowStage与启动模式探析>,作者:柠檬味拥抱. UIAbility组件概述 UIAbility组 ...
- 介绍一个我开源的项目:一键部署 VictoriaMetrics 群集
作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 我实在是非常喜欢这个强大的 metrics 监控组件 Vi ...
- FreeSWITCH在answer前主动发dtmf
操作系统 :CentOS 7.6_x64 FreeSWITCH版本 :1.10.9 NAT环境的主动外呼场景下,会遇到线路侧回铃音数据无法接收的问题,需要FreeSWITCH主动发送RTP数据,发送D ...
- Linux笔记03: Linux常用命令_3.1命令的基本格式
3.1命令的基本格式 3.1.1 命令提示符 [root@localhost ~]# 这就是Linux系统的命令提示符.各部分含义如下: ●[]:这是提示符的分隔符号,没有特殊含义. ●root:显示 ...
- 手动安装pinia、给项目添加pinia实例
用你喜欢的js包管理器安装pinia: yarn add pinia # 或者使用 npm npm install pinia 创建一个 pinia 实例 (根 store) 并将其传递给应用: 编辑 ...
- 【C#】【字符串内插】关于$" "(字符串内插构造格式化字符串)的使用
1.变量名插入使用 var num = 1; Console.WriteLine($"Output number:{num}"); // Output: Output number ...
- 某RBAC管理系统审计
某RBAC管理系统审计 前言 这个管理系统的审计我去年就开始了但烂尾了,那时候太热闹了log4j2,cs的cve反制等等.这个都给忘了,所以本篇可能有些图有点老,现在就是旧图没一个个换遇到的新的就加上 ...