代码编织梦想

说实话,我本人目前是没有接触到多少关于期望的题的,基本这个专题就是抄学长PPT+写自己理解

(持续更新,见一道补一道)

A 本题主要考察了运气

https://ac.nowcoder.com/acm/contest/46800/L

题目来源:2023牛客寒假算法基础集训营1

这个题首先要读懂题,我一开始是真以为这个题是运气题了.......后来才发现了真正的题目要求,剩下的都是废话

思路:最优策略,肯定是先锁定在哪个团体,然后确定是团队中的第几个成员。

团体的话最多问4次(要是前四次都回答否,则一定在第五个,这一步是通过推理可得),问一次就问出结果的概率是1/5,问两次出结果是4/5*1/4=1/5,三次同理也是1/5,四次出结果是2/5

那么我们算一下团体的期望:

5abecd326d864aeadd33baee68e47311.png

个人同理:第一次是1/4,第二次是1/4,第三次是2/4

f1d79b4ca7a4e56ac63b97e2e16e3eee.png

2.8+2.25=5.05 所以答案就是32

B 抽A

第一次抽到A的概率:4/52=1/13

第二次抽到A的概率:

7f8898e66fb20d82a26e9d2aaa8f116a.png

(第一次抽到A和第一次没抽到A的情况分别累加)

最后归纳,得出每次的概率都是1/13,然后期望累加,得到答案是 n/13

C Game

题目来源:第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(上海)(热身赛)

https://ac.nowcoder.com/acm/contest/9731/A

这个题的思路就很简单了,就是找互质的有多少,然后互质的占总共的

这个题注意得分奇偶

n为偶数

cc4ddc9f45cb369729da7bb7e87bcf02.png

n为奇数

e91ec995ffcf3d01f6629ed918907653.png

(思路和B是完全一样的,抽到不抽到对它完全没有影响)

#include <bits/stdc++.h>
#define ll long long
#define lowbit(x) ((x)&(-x))
using namespace std;
const ll MAX=1e6+5;
const int mod=1e9+7;
ll n;
int main(){
    ll cnt=0;
    scanf("%lld",&n);
    for(int i=1;i<=n;i++)
    for(int j=i+1;j<=n;j++)
    if(__gcd(i,j)==1) cnt++;
    ll p=cnt,q=n-1;
    if(n&1) q=n;
    printf("%lld/%lld\n",p/__gcd(p,q),q/__gcd(p,q));
    system("pause");
    return 0;
} 

D Tlopex从赌场偷来的不锈钢的骰子

题目链接: https://buctcoder.com/problem.php?cid=2586&pid=1

题干:Tlopex从昨晚梦中的赌场里偷了一个有n个面的不锈钢骰子,请帮帮他计算一下期望扔几次才能把每个面都掷到呢?0<=n<=10000

输入n,输出一个两位小数

#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1005;
double dp[MAXN];

int main() {
        int n;
        scanf("%d", &n);
        dp[n] = 0;
        for (int i = n - 1; i >= 0; i--) {
                dp[i] = dp[i + 1] + (double)n / (double)(n - i);
        }
        printf("%.2lf\n", dp[0]);
        return 0;
}

思路:

66a3799eaf5f718c9b6a8da85c0f4163.png

化简后

2661b66921294c919ea776fe04f477ca.png

dp[i]指的是距离所有面都被投到的步数

我们知道,每次投掷,要么投出已投出的面数(概率是i/n),要么投出未投出的面数(概率是(n-i)/n)

然后dp[n]=0,然后写代码就行了

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_62592071/article/details/128746035

[uva]10529 dumb bones 期望 + 区间dp dp函数单调性优化_maxmercer的博客-爱代码爱编程

题意:你试图把一些多米诺骨牌排成直线,然后推倒它们。但是如果你在放骨牌的时候不小心把刚放的骨牌碰倒了,它就会把相临的一串骨牌全都碰倒,而你的工作也被部分的破坏了。 比如你已经把骨牌摆成了DD__DxDDD_D的形状,而想要在

tyvj1952 easy(期望+dp)_coco_t_的博客-爱代码爱编程

题目链接 补充:n<=300000 分析: 比较好想的是二维的dp: f[i][j]表示到第i位,已经连续有j个零的期望 且不说如何转移,这样的时间复杂度是O(n^2),显然GG 所以我们需要改变状态:

uva 11600 masud rana(期望+状压dp)_self-discipline的博客-爱代码爱编程

题意:n个城市,城市间两两有一条道路,m条道路是没有怪物的,每天随机选一个城市(除了本身),走过去,消灭途中的怪物,如果消灭完后,所有城市都可以不通过有怪物的道路到达就结束,问平均需要的天数。 分析:图+期望+状压好题。求期望,逆推法。我们可以将互相间没有妖怪的城市看成一个点,因为他们对答案没有贡献。dp[u][s]表示当前在u这点,已经可以互相到达的城

算法学习 | 期望dp+概率dp_ttcharlotte的博客-爱代码爱编程

(我一直以为我三四天前就发出来了) 最近集训的时候学习了概率与组合的内容,恰巧今天又学了概率dp和期望dp,个人觉得超级有意思,比其他dp有趣多了,借机分享一下自己的理解心得。(我才不会告诉你是因为别的dp太难了我学不会呜呜

拓扑排序+期望dp解决dag上的期望-爱代码爱编程

例题1:luogu4316 倒推: //luoguP4316.1 题意:n<1e5 m<2e5 DAG上到第N个点的期望步数 每次选择等概率前往下一个点,带边权 //一般期望倒着维护就不用乘贡献概率,正着就要乘贡献概率 //逆推版本:设dp[i]为i到点n的期望步数 //dp[i]=sum_{}(dp[j]+eij)/ou(i) //

puzzles【codeforces 697 d】【树形dp + 期望dp】-爱代码爱编程

Codeforces Round #362 (Div. 2) D   我们从1号结点开始,给每个结点标序,问的是每个结点的序号的期望是多少,输出这N个结点的期望。那么1号点的期望一定就是1了,对于其他的点呢?   可以举例这样的一幅图,首先我们可以确定1(因为是根结点)的期望一定是1,那么在看3号结点的期望应该怎么计算呢?   3号结点的期望是

LightOJ 1287 Where to Run (期望+状压dp+记忆化搜索)-爱代码爱编程

题意:给出无环图,小偷一开始在起点0,走过的点不能再走,当还有路可以走时,可以选择停留5min,相当于加一个自环,求最后无路可走的时间期望。 题解:期望+状压dp+记忆化搜索 因为n只有15,用状压dp。 我们用 d p

HDU 4336 Card Collector (期望+状压dp)-爱代码爱编程

题意:给出n种图案在每一张卡片上的出现的概率,一张卡片只能出现一种图案,或者不出现,求集齐所有图案所需的卡片期望数。 题解:期望+状压dp 二进制压缩, d p [

期望/概率dp入门+题单-爱代码爱编程

期望dp几种常见设转移方程数组的方法 1、设f [ i ]表示的是由i 状态变成 最终状态的期望 (由末状态逆推) 2、按照题意直接设 3、把选择的东西加入数组,如f [ i ] [ j ]表示第i个物品选j个的期望 或f [ i ] [ j ]表示有i个A 物品,j个B物品的期望 (结合第一种的话就是,dp[i]j[j]:已经有i个A ,j个B 离

【c语言练习】 二进制中1的个数-爱代码爱编程

目录 题目详情:思路一:思路二:思路三: 题目详情: 思路一:  拿到二进制的每一位,看它是否等于 1

[leetcode] 股票的价格跨度(单调栈)-爱代码爱编程

题目链接: 496 下一个更大元素 I 901 股票价格跨度 先看一道单调栈相关的题目 下一个更大元素 nums1 中数字 x 的 下一个更大元素 是指 x 在 nums2 中对应位置右侧的 第一个 比 x 大的元素。 两个没有重复元素的数组 nums1 和 nums2 ,下标从 0 开始计数,其中nums1 是 nums2 的子集。

mit6.006-problemset02-爱代码爱编程

2-1 解决递归(Solving recurrences) 得出下面递归的解。解应该包含递归允许的最严格的上界和下界。假设 T

【java|golang】2293. 极大极小游戏-爱代码爱编程

给你一个下标从 0 开始的整数数组 nums ,其长度是 2 的幂。 对 nums 执行下述算法: 设 n 等于 nums 的长度,如果 n == 1 ,终止 算法过程。否则,创建 一个新的整数数组 newNums ,新

acwing - 寒假每日一题2023(day 6——day 10)-爱代码爱编程

文章目录 一、AcWing 4645. 选数异或(中等)1. 实现思路2. 实现代码 二、AcWing 4644. 求和(简单)1. 实现思路2. 实现代码 三、AcWing 4653. 数位排序(简单)1.

力扣sql简单篇练习(一)-爱代码爱编程

力扣sql简单篇练习(一) 1 大的国家 1.1 题目内容 1.1.1 基本题目信息 1.1.2 示例输入输出 1.2 示例sql语句 SELECT name,population,area FROM W

【leetcode高频100题-3】冲冲冲(持续更新23.1.22)-爱代码爱编程

文章目录 62. 不同路径题意解法1 排列组合解法2 动态规划 64. 最小路径和题意解法1 DFS(剪枝也超时)解法2 动态规划 62. 不同路径 题意 一道数学题,排列组合/小学奥赛题。动态规划

一文带你秒懂十大排序-爱代码爱编程

目录 一、排序的概述   二、插入排序 1、直接插入排序  2、希尔排序  二、选择排序  1、直接选择排序 2、堆排序  三、交换排序  1、冒泡排序 2、快速排序  四、归并排序 五、计数排序  六、基数排序 七、桶排序  八、排序总结 一、排序的概述   排序就是将一组乱序的数据集合变得有序 排序可

python机器学习(一)算法学习的步骤、机器学习的应用及流程(获取数据、特征工程、模型、模型评估)_python机器学习算法-爱代码爱编程

机器学习入门 机器学习中需要理论性的知识,如数学知识为微积分(求导过程,线性回归的梯度下降法),线性代数(多元线性回归,高纬度的数据,矩阵等),概率论(贝叶斯算法),统计学(贯穿整个学习过程),算法根据数学基础一步步的推导