刷题计划一:概率&期望&统计

本文精选洛谷概率与统计题目,涵盖从基础到高级的多种题型,包括小魔女帕琪、“单选错位”等,提供详细题解及代码实现,适合学习概率论与数理统计的同学参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

  1. 不一定非要跟kuangbin大大的题单的,遇到想要学的东西,也可以自己去找题,去深入。
  2. 我发现现在不一定非要把字符串&dp&几何学得很精通,咋说呢?总是发现还有很多基础知识自己都还没搞通透,而且只学那三样的话,又迟迟没有行动,还不如想学啥就深入学,得空顺便把那三样学了(递进)。
  3. 对于很不熟悉的知识点,还是建议直接看题解(看懂),多见识一些题,多学会一些解题思路也是好的,不一定每一题都要死磕直到自己能独立想出来(对我而言)。快意题海

洛谷题单

  1. 官方题单8题:【数学2-3】概率与统计
  2. 大佬题单:xzy的概率期望题单

题目

洛谷官方题单

  1. 传送门官方题单8题:【数学2-3】概率与统计

1. P3802 小魔女帕琪(“七重奏”个数期望)

  1. P3802 小魔女帕琪
  2. 题意:给定7个数 a 1 − a 7 a_1-a_7 a1a7,分别表示 i 属性魔法的个数,当有连续7个魔法属性都不一样的时候,能触发一次“七重奏”,求将魔法全部释放能触发的“七重奏”的数量的期望。
    2.1 比如1 1 1 1 1 1 1触发“七重奏”的数量的期望位1.000。
  3. 题解贼简单易懂:题解 P3802 【小魔女帕琪】
    在这里插入图片描述
    在这里插入图片描述
  4. 代码
#include <bits/stdc++.h>
// #define int long long
using namespace std;
int a[10], n;
signed main() {
    for (int i = 1; i <= 7; i++) cin >> a[i], n += a[i];
    if (n < 7)
        puts("0.000");
    else {
        double ans = 1.0 * (n - 6);
        for (int i = 1; i <= 7; i++) {
            ans *= 1.0 * i * a[i] / (n - i + 1);
        }
        printf("%.3lf\n", ans);
    }
    return 0;
}

2.P1297 [国家集训队]单选错位

  1. P1297 [国家集训队]单选错位

3.P1654 OSU!

  1. P1654 OSU!

4.P1850 [NOIP2016 提高组] 换教室

  1. P1850 [NOIP2016 提高组] 换教室

5.P4316 绿豆蛙的归宿

  1. P4316 绿豆蛙的归宿

6.P1199 [NOIP2010 普及组] 三国游戏

  1. P1199 [NOIP2010 普及组] 三国游戏

7.P1288 取数游戏II

  1. P1288 取数游戏II

8.P2197 【模板】nim 游戏

  1. P2197 【模板】nim 游戏

平常遇到的题目

1.2021牛客暑期多校训练营5-B Boxes(知道所有球是黑/白的代价期望)

  1. 传送门

  2. 题意:有n个球,每个球的颜色都不知道,但是只能是白球或者黑球。花费代价C可以知道剩下的没有翻开的球中黑球的个数,翻开每一个球 i 的代价为 w i w_i wi,求知道所有球的颜色的最小代价期望
    2.1 数据范围。n为整数,C, w i w_i wi都为小数。
    在这里插入图片描述

  3. 题解
    在这里插入图片描述
    3.1 这种题,今后做不出来可以靠猜,很可能就是什么2^x,组合数什么的。
    3.2 实在推球不出来,知道答案也推不出来,溜了。

  4. 我的思考&总结
    4.1 double能表示的范围:大概15-16位有效数字(不要与int,long long联系);float只有大概6-7位emm(太鸡肋了)
    在这里插入图片描述
    补充:long double精度大概为20位。也就是整数部分加小数部分大概最多20位是准确的。
    4.2 **做不来靠猜???**可以

  5. 代码

#include <bits/stdc++.h>
// #define int long long
#define dbg(x) cout << #x << "===" << x << endl
using namespace std;
const int N = 1e5 + 10;
// const double eps = -8;
// int sgn(double x) {
// if (fabs(x) < eps) return 0;
// return (x > 0) ? 1 : -1;
// }
int n;
double w[N], C;
double sum[N];
double f[N];
void init() {
    f[1] = 0.5;
    for (int i = 2; i < N; i++) f[i] = f[i - 1] * 0.5;
}
signed main() {
    init();
    cin >> n >> C;
    for (int i = 1; i <= n; i++) cin >> w[i];
    sort(w + 1, w + 1 + n);
    for (int i = 1; i <= n; i++) sum[i] = sum[i - 1] + w[i];
    double ans = C;
    for (int i = 1; i <= n - 1; i++) ans += sum[i] * f[n - i];
    ans = min(ans, sum[n]);
    printf("%.8lf\n", ans);
    return 0;
}
### LeetCode 数学类型目解顺序推荐 #### 、基础数学概念理解 对于初学者来说,掌握基本的数学原理至关重要。这不仅有助于解决特定类型的LeetCode问,还能增强整体编程逻辑能力。 - **位运算操作** - 学习如何利用二进制表示来简化某些计算过程,比如快速判断奇偶性或是实现高效的加减乘除替代方案。 - **取模运算特性** - 掌握求余数的方法及其应用场景,在处理循环模式识别等问时非常有用[^4]。 ```cpp // 示例:找出只出现次的数字(其他都出现了三次) int singleNumber(std::vector&lt;int&gt;&amp; nums) { int value = 0; for (int i = 0; i &lt; 32; ++i) { int sum = 0; for (size_t j = 0; j &lt; nums.size(); ++j) { if ((nums[j] &gt;&gt; i) &amp; 1) { sum += 1; } } value += ((sum % 3) &lt;&lt; i); } return value; } ``` #### 二、逐步深入的数据结构与算法融合 随着技能提升,应该尝试将所学到的基础知识应用于更加复杂的场景之中。 - **组合运用多种技术手段解决问** - 当面对涉及较大数值范围或者精度要求较高的挑战时,可能需要结合大整数库、分数类等高级工具;同时也要善于挖掘目背后隐藏着的经典算法模型,如欧几里得最大公约数算法等。 #### 三、针对具体领域优化解决方案 最后阶段则是专注于某方向上的精深研究与发展。 - **几何图形分析** - 如果对平面直角坐标系下的距离度量感兴趣,则可以从最简单的两点间直线距离开始探索,逐渐过渡到多边形面积周长测量等方面。 - **概率统计推断** - 关注随机事件发生的可能性评估以及期望值预测等内容,这类知识点往往能够帮助我们更好地理解和设计蒙特卡洛模拟等相关程序[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值