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

前言

  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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值