zoukankan      html  css  js  c++  java
  • 【博弈论】关于蒙蒂霍尔问题(三门问题)的讨论

    洛谷期中考试的第三题,思维型非常强,其来源就是美国的三门问题,又称:蒙蒂霍尔问题或山车问题。

    三门问题的原型是这样的:

    「假设你正在参加一个游戏节目,你被要求在三扇门中选择一扇:
    其中一扇后面有一辆车;其余两扇后面则是山羊。
    你选择了一道门,假设是一号门,然后知道门后面有什么的主持人,
    开启了另一扇后面有山羊的门,假设是三号门。
    他然后问你:“你想选择二号门吗?”转换你的选择对你来说是一种优势吗?」

    如果是按照人的【直觉】的话,肯定是每个门有车的概率都是1/3啊,所以换不换都一样。

    没错,我一开始也是这么想的,但是如果是这样,那为什么还要把这种题放到NOIP的提高组里。实际上,上面的那种【直觉】是错误的,完全错误的!

    再推了一大张打草纸后,发现对于这个问题,每次当主持人告诉你其中的一个错误选项后,你做出的觉得必须要换,换对你来说是一种优势。

    我们可以这么开看待这个问题:

    1.当前选择的那个门,有汽车的概率是33%,另外两个门有汽车的概率是66%。 【到这里没问题吧,神奇的在下面】

    2.主持人告诉你另外两个门中有一个门没有汽车,那那个门就可以扔掉了,那剩下的那个门,拥有汽车的概率就66%。【是不是?是不是这样看,转换是有优势的!】


    接下来,对于该问题进行推广,推广到OI中:

    题目描述

    Bob 正在考试,他遇到了一个奇怪的选择题:这个选择题共有 n个选项,其中只有一个选项是正确的。他完全不会做这题,所以只能靠蒙。

    蒙这道题分为 n−2n轮,在第 1 轮开始之前,Bob 会在这 n 个选项中随机蒙一项,之后的每轮流程如下:首先,Alice 会过来帮他排除一个选项,由于 Alice 事先知道答案,所以她会在现有的除正确的那一项和 Bob 正在选的那一项外的选项里,随机删去一个。之后,Bob 可以选择是否更换自己蒙的选项,如果更换,则随机更换到除正在选的那一项之外的任意一项。

    Bob 在这 n−2n  轮中,由于和 Alice 达成的神秘协定,需要恰好更换 kkk 次选项。他想知道,如何更换,使得自己蒙对的概率最大,输出这个概率。为了方便,你需要输出这个概率的分数形式在模 109+710^9 + 7 意义下的结果。

    前k-1次更换选项,最后1次更换选项的机会要留到最后。可以推出递归式,然后解答即可。

    代码实现:

    #include <bits/stdc++.h>
    using namespace std;
    const int MAXN = 100005;
    const int MOD = (int)1e9 + 7;
    int fexp(int a, int b) {
      int res = 1;
      for(int i = 1; i <= b; i <<= 1) {
        if(i & b) res = 1LL * res * a % MOD;
        a = 1LL * a * a % MOD;
      }
      return res;
    }
    
    int inv(int x) {
      return fexp(x, MOD - 2);
    }
    
    int f[MAXN], g[MAXN];
    int main() {
      int n, k;
      scanf("%d %d", &n, &k);
      if(k == 0) {
        printf("%lld
    ", 1LL * inv(n) % MOD);
      } else if(k == 1) {
        printf("%lld
    ", 1LL * (n - 1) * inv(n) % MOD);
      } else {
        puts("GG");
      }
      return 0;
    }
  • 相关阅读:
    iOS 苹果开发证书失效的解决方案(Failed to locate or generate matching signing assets)
    iOS NSArray数组过滤
    App Store2016年最新审核规则
    iOS 根据字符串数目,自定义Label等控件的高度
    iOS 证书Bug The identity used to sign the executable is no longer valid 解决方案
    Entity FrameWork 增删查改的本质
    EF容器---代理类对象
    Entity FrameWork 延迟加载本质(二)
    Entity FrameWork 延迟加载的本质(一)
    Entity FrameWork 增删查改
  • 原文地址:https://www.cnblogs.com/virtualman/p/9566955.html
Copyright © 2011-2022 走看看