• 作者:zifeiy
  • 标签:概率DP

题目链接:https://www.luogu.org/problem/P2719

我们设 f[n][m] 用于表示还剩下n张A类票m张B类票时最后两张票相同的概率,则:

  • 如果 \(n \le 1\) 且 \(m \le 1\) ,则 \(f[n][m] = 0\) (凑不齐两张一样的)
  • 否则,如果 \(n == 0\) 或者 \(m == 0\),则 \(f[n][m] = 1\) (肯定是一样的两张票)
  • 否则,\(f[n][m] = (f[n-1][m] + f[n][m-1]) \times 0.5\) (有一半的概率拿走一张A类票,另一半的概率拿走一张B类票)

所以我们可以按照如下思路编写代码如下:

#include <bits/stdc++.h>
using namespace std;
const int maxn = 1300;
double f[maxn][maxn];
int n; int main() {
scanf("%d", &n);
n /= 2;
for (int i = 0; i <= n; i ++) {
for (int j = 0; j <= n; j ++) {
if (i < 2 && j < 2) f[i][j] = 0.;
else if (i == 0 || j == 0) f[i][j] = 1.;
else f[i][j] = 0.5 * (f[i-1][j] + f[i][j-1]);
}
}
printf("%.4lf\n", f[n][n]);
return 0;
}

记忆化搜索方式写的代码:

#include <bits/stdc++.h>
using namespace std;
const int maxn = 1300;
bool vis[maxn][maxn];
double f[maxn][maxn];
int n; double dfs(int n, int m) {
if (vis[n][m]) return f[n][m];
vis[n][m] = true;
if (n <= 1 && m <= 1) return 0.;
if (n == 0 || m == 0) return 1.;
f[n][m] = 0.5 * (dfs(n-1, m) + dfs(n, m-1));
return f[n][m];
} int main() {
scanf("%d", &n);
n /= 2;
printf("%.4lf\n", dfs(n, n));
return 0;
}

洛谷P2719 搞笑世界杯 题解 概率DP入门的更多相关文章

  1. 洛谷——P2719 搞笑世界杯

    题目背景 很久很久以后,一次世界杯,. 题目描述 随着世界杯小组赛的结束,法国,阿根廷等世界强队都纷纷被淘汰,让人心痛不已. 于是有人组织了一场搞笑世界杯,将这些被淘汰的强队重新组织起来和世界杯一同比 ...

  2. 洛谷 P2719 搞笑世界杯

    题目传送门 解题思路: f[i][j]表示买i张A票,j张B票的概率. AC代码: #include<iostream> #include<cstdio> using name ...

  3. 洛谷P2858 奶牛零食 题解 区间DP入门题

    题目大意: 约翰经常给产奶量高的奶牛发特殊津贴,于是很快奶牛们拥有了大笔不知该怎么花的钱.为此,约翰购置了 \(N(1 \le N \le 2000)\) 份美味的零食来卖给奶牛们.每天约翰售出一份零 ...

  4. 洛谷P2507 [SCOI2008]配对 题解(dp+贪心)

    洛谷P2507 [SCOI2008]配对 题解(dp+贪心) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/1299251 链接题目地址:洛谷P2507 [S ...

  5. 洛谷P1850 换教室(概率dp)

    传送门 我的floyd竟然写错了?今年NOIP怕不是要爆零了? 这就是一个概率dp 我们用$dp[i][j][k]$表示在第$i$个时间段,已经申请了$j$次,$k$表示本次换或不换,然后直接暴力转移 ...

  6. 洛谷P1220 关路灯 题解 区间DP

    题目链接:https://www.luogu.com.cn/problem/P1220 本题涉及算法:区间DP. 我们一开始要做一些初始化操作,令: \(p[i]\) 表示第i个路灯的位置: \(w[ ...

  7. 洛谷 P1879 玉米田(状压DP入门题)

    传送门 https://www.cnblogs.com/violet-acmer/p/9852294.html 题解: 相关变量解释: int M,N; int plant[maxn][maxn];/ ...

  8. P2719 搞笑世界杯

    P2719 搞笑世界杯我觉得这个难度是假的,如果不知道这个是dp我就做不出来,好吧,知道我也没做出来..f[i][j]表示剩i张A票,j张B票时,最后两张票相同的概率.当前的队首有一半的概率选A,一半 ...

  9. 洛谷P2832 行路难 分析+题解代码【玄学最短路】

    洛谷P2832 行路难 分析+题解代码[玄学最短路] 题目背景: 小X来到了山区,领略山林之乐.在他乐以忘忧之时,他突然发现,开学迫在眉睫 题目描述: 山区有n座山.山之间有m条羊肠小道,每条连接两座 ...

随机推荐

  1. ArcGISTiledMapServiceLayer

    <!DOCTYPE html><html><head> <meta charset="utf-8"> <title>第一 ...

  2. 【eclipse】解决:eclipse或STS运行maven工程出现Missing artifact jdk.tools:jdk.tools:jar:1.7问题

    eclipse或STS运行maven工程出现Missing artifact jdk.tools:jdk.tools:jar:1.7问题 最近项目中使用到大数据平台,代码中应用了hbase-clien ...

  3. 【linux配置】Linux系统下安装rz/sz命令以及使用说明

    Linux系统下安装rz/sz命令以及使用说明 对于经常使用Linux系统的人员来说,少不了将本地的文件上传到服务器或者从服务器上下载文件到本地,rz / sz命令很方便的帮我们实现了这个功能,但是很 ...

  4. [运维]ESXI系统的安装 标签: 虚拟机运维vmware服务器虚拟化 2017-05-05 09:24 496人阅读 评论(15)

    上篇博客说到了VMware vSphere,那么接下来就讲一下我们如何将之投入使用.vsphere的虚拟机管理程序就是esxi. 什么是ESXI? vSphere产品套件的核心产品是虚拟机管理程序,作 ...

  5. ORACLE 所有 表 记录 条数

    SELECT TABLE_NAME,TO_NUMBER(EXTRACTVALUE(XMLTYPE(DBMS_XMLGEN.GETXML('SELECT COUNT(*) CNT FROM '||TAB ...

  6. windows下 python中报错ImportError: No module named 'requests'

    原因没有安装requests模块, 可以切换到python的安装目录找到 script文件夹 example: 进入cmd窗口切换到上面的目录直接运营下面两个命令中的一个 1. > Path\p ...

  7. LintCode A+B问题

    给出两个整数a和b, 求他们的和, 但不能使用 + 等数学运算符. 说明 a和b都是 32位 整数么? 是的 我可以使用位运算符么? 当然可以 样例 如果 a=1 并且 b=2,返回3 1.(忽略进位 ...

  8. Effective Modern C++:05右值引用、移动语义和完美转发

    移动语义使得编译器得以使用成本较低的移动操作,来代替成本较高的复制操作:完美转发使得人们可以撰写接收任意实参的函数模板,并将其转发到目标函数,目标函数会接收到与转发函数所接收到的完全相同的实参.右值引 ...

  9. 中国境内PE\VC\投资公司名单

    中国境内PE\VC\投资公司名单 1.青云创投 2.高盛 3.红杉资本 4.鼎晖创投 5.枫丹国际 6.派杰投资银行 7.凯雷投资 8.长安私人资本 9.格林雷斯 10.汉能资本 11.启明创投 12 ...

  10. matlab 单元最短路 Dijkstra算法 无向图

    W = [2 8 1 1 6 5 1 2 3 6 4 9 3 7 9]; S = [0 0 0 1 1 3 3 3 5 5 6 4 6 2 2];S=S+1; T = [1 3 2 4 3 4 5 6 ...