【GYM 101606F】Flipping Coins (概率dp)

Flipping Coins By Telephone(电话硬币问题) 如何通过打电话的方式进行一次公平的硬币博弈 阅读详情

https://codeforces.com/gym/101606/problem/F

题意

初始有n枚硬币正面朝下,一共要抛硬币m次,每次都是以最优的策略抛,问最后正面朝上的硬币的期望是多少。
1<=n,m<=400

题解

最优的策略即不到万不得已不会选已经是正面的硬币抛,一开始想的是用一个公式解出这题,其实这是很不现实的,因为总会以最优的策略抛,根本就没法用公式来代替,况且数据范围是400,组合数也算不下。

因为太少接触概率dp,所以根本看不出来。

dp[i][j]:抛j次有i枚硬币朝上的概率。

  1. i<n:
    dp[i+1][j+1] = dp[i][j]*0.5
    dp[i][j+1] = dp[i][j]*0.5
  2. i == n
    dp[i][j+1] = dp[i][j]*0.5
    dp[i-1][j+1] = dp[i][j]*0.5

因为一旦 i==n那么策略就不一样了,不能用同一个转移方程。 这里最外层应该枚举j,因为j是有序的,总是会用到j-1,为什么不能枚举i呢,因为i-1会在i的时候更新,有后效性。

代码

#include <bits/stdc++.h>
using namespace std;
#define FOR0(a,b) for(int i = a; i < b; ++i)
#define FORE(a,b) for(int i = a; i <= b; ++i)
typedef long long ll;
typedef pair<int,int> pii;

const int maxn = 405;
int n,k;
double dp[maxn][maxn];
int main() {
scanf("%d%d", &n, &k);
dp[0][0] = 1;
for(int j = 0; j <= k; ++j) {
for(int i = 0; i <= n; ++i) {
if(i == n) {
dp[i-1][j+1] += dp[i][j]*0.5;
dp[i][j+1] += dp[i][j]*0.5;
} else {
dp[i+1][j+1] += dp[i][j]*0.5;
dp[i][j+1] += dp[i][j]*0.5;
//cout << i <<" " << j << " " << dp[i][j] <<" " << dp[i+1][j+1]<< endl;
}
}

}

double ans = 0;
for(int i = 1; i <= n; ++i)
    ans += i*dp[i][k];
printf("%.8lf\n", ans);
return 0;

}

Codeforces 626 D. Jerry’s Protest(概率DP) codeforces每日一练。 题意: 有n张卡片,卡片上的数字就是分数,比如说甲乙两人抽卡,三局两胜,一局得分高的胜,求在甲赢了两局的情况下乙赢了第三局且总分比甲高的概率。 思路: 数据1e3,很明显的On^2算法,所以考虑暴力。 把分数数组排序,然后用cnt每轮可能出现的情况个数,cnt1统计分数差出现次数,cnt2统计甲前两局领先乙的总分方案数。 很明显,排序后的a[n]为最大得分,所以可以遍历1~a[n],两层循环统计甲前两局领先乙的总分方案数,cnt2[i+j]=cnt1[i]*cnt1[j] 。 最后也是两层循环,枚举分差,每对可能出现的分差对答案的贡献为: cnt1[i] * c 立即下载

相关推荐

物理与工程中的‘黑话’:Kronecker delta和Levi-Civita符号到底简化了什么?

本文深入解析了物理与工程中常用的Kronecker delta和Levi-Civita符号的简化作用。通过对比传统表示与张量表示,展示了这些符号在向量运算、矩阵迹计算及流体力学模拟中的高效应用,显著提升计算效率和代码可读性。特别适合理论物理和工程数学领域的学习者与从业者。

weixin_27215403的博客 397

【GYM 101606F】Flipping Coins (全概率公式 + 概率dp)

题目大意:有n枚面朝下的硬币,问抛m次之后,最大的朝上的硬币数期望是多少? 分析:为什么问的是最大的朝上个数呢?因为是要抛m次,而算的是你最后面朝上的硬币的个数。想想看,想要最后面朝上的硬币最多,每次都选面朝下的硬币来抛,问题就在于可能出现抛了不到m次就全朝上的情况,这个时候只能选一枚面朝上的硬币来抛。 解法:看到期望就以为是期望dp了嘛?试了一下然后发现期望dp状态都列不出来。实际上这题是一个概...

qq_41997978的博客 402

【架构师面试-缓存与搜索-1】-缓存与缓存置换策略源码实现

1:什么是缓存 缓存:加速数据访问的存储,降低延迟(latency),提升吞吐量(Throughput)的利器。 1:缓存演进历史 1. 查库 2. ConcurrentHashMap 3. LRU 4. Guava Cache 5. 分布式缓存(redis,MemCache) 6. 多级缓存 2:在什么地方加缓存 缓存对于每个开发者来说是相当熟悉了,为了提高程序的性能我们会去加缓存,但是在什么地方加缓存,如何加缓存呢? 举个栗子:假设一个网站,需要提高性能,缓存可以放在浏览器,可以放

chongfa2008的博客 6437

【Gym - 101606F】Flipping Coins(概率dp)

题干: Here’s a jolly and simple game: line up a row ofNidentical coins, all with the heads facing down onto the table and the tails upwards, and for exactlyKtimes take one of the coins, toss it int...

xuanweiace的博客 529

Isaac Sim 车辆动力学:从参数调优到户外仿真的挑战与实战

本文深入探讨了Isaac Sim在车辆动力学仿真中的应用,从参数调优到户外场景模拟的实战经验。详细解析了悬架系统、轮胎物理模型等核心参数的设置技巧,并分享了应对户外仿真挑战的实用方案。通过Vehicle Wizard高级使用和传感器配置,帮助开发者高效完成车辆仿真与算法开发。

weixin_29192211的博客 404

MFC+Modbus-Tcp协议实现温湿度传感器采集

本文简单介绍MFC使用-Tcp通信实现系列MODBUSTCP型温湿度传感器采集数据。

zhigang_zhao的博客 2830

Flipping Coins Gym - 101606F

题意:Here’s a jolly and simple game: line up a row of N identical coins, all with the heads facingdown onto the table and the tails upwards, and for exactly K times take one of the coins, toss itinto th...

Ma_tx 864

8、干式变压器

干式变压器的发展,是人类不断挑战材料科学和热物理极限的过程,每一次技术突破,都是在。温度升高,ε_r反而下降(因为分子活动性增强,极化响应变慢)。:固体导热的热阻比液体对流大一个数量级,这是无法逾越的物理规律。Nomex在高温下不是逐渐分解,而是保持性能直到一个临界点。如果 T_a = 40°C,则 T_c = 146.7°C。干式变压器(固体介质分隔):热场、电场、流场(空气)形成三维氢键网络,即使在高温下也能保持机械强度。:不是在现有技术上修修补补,而是寻找新的。仍在H级绝缘允许范围内(≤180°C)

renpeng2692873032的博客 228

Gym101606F Flipping Coins

dp

李典金 361

PyTorch深度学习实战(24)——使用U-Net架构进行图像分割

图像分割 (Image segmentation) 是计算机视觉领域中的一个重要任务,旨在将图像划分为具有语义信息的不同区域或对象。与目标检测任务不同,图像分割要求像素级别的精确定位和分类,将每个像素标记为属于哪个类别或属于哪个区域。在本节中,我们将介绍图像分割的基本概念,并训练一个基于 U-Net 架构的图像分割模型。

盼小辉丶的博客 1万+

【麒麟系统】Rsync文件复制与同步工具

本文摘要: Rsync是一款Linux/Unix系统标配的高效文件同步工具,支持增量传输、SSH加密、断点续传等核心功能,相比SCP具有显著优势。文章详细解析了Rsync的五种标准语法格式和常用参数组合,重点介绍了本地同步、远程SSH同步(推送/拉取)的实操方法,并提供了密钥免密登录配置方案。针对企业运维场景,还讲解了文件过滤、镜像同步(--delete)、迁移同步(--remove-source-files)、空运行预校验(--dry-run)等高级功能,以及带宽限速等优化技巧,帮助用户安全高效地完成各类

信创运维工程师 · 银河麒麟 & 容器实战 | 金融生产环境迁移·等保加固 | 142篇原创·17万+阅读 997

Flipping Coins

概率/期望DP

a free man 695

YOLOv8与Swin Transformer的完美结合:如何提升目标检测的精度与速度

Swin Transformer(Shifted Window Transformer)是一种新型的视觉Transformer架构,采用了局部窗口(Window)和局部窗口偏移(Shifted Window)的策略,极大减少了计算复杂度,同时保持了全局感知能力。局部窗口注意力:每个窗口内的元素进行自注意力计算,减少计算量。窗口偏移:通过在不同层次引入窗口偏移,增强了全局信息的交互。层级设计:通过堆叠多个层次的模块,逐渐捕捉不同尺度的特征。

shrgegrb的博客 2151

Gym - 101606F-Flipping Coins 概率DP

题意:给出n个硬币,初始时,n个硬币都是正面朝下的。现在你有k次机会将硬币投掷到空中,问你k次投掷后硬币正面朝上的个数的期望是多少题解:我们设DP[i][j] 表示 i 次 投掷后有j个硬币正面朝上的概率最后的答案为∑(DP[k][i] * i)转移方程为: DP[i+1][j] = DP[i][j] * 0.5              选择一个反面的投掷且投掷结果为反面            ...

Uniontake 232

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Flipping Coins Gym - 101606F(概率DP)

题意 有n个硬币,一开始都反面朝上,问连续k次从中选出1个并进行投掷,问最后正面朝上硬币的数学期望最大。 思路 每次选一个硬币进行投掷,最优的策略是选择反面朝上的进行投掷。那么可以设f(i,j)表示投掷i次j个硬币正面朝上的概率 选择反面朝上的进行投掷时,f(i-1, j) = f(i-1, j-1)/2 + f(i-1, j)/2 注意当j == n -1 这种状态可以由n全正这个状态转移。 当...

sunmaoxiang的博客 229

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Gym 101606F Flipping Coins(概率dp)

题意:给n枚硬币,初始全部反面向上,有k次机会挑选一枚硬币抛,求正面向上的最大数学期望。思路:求的是最大数学期望,所以只有两种情况。1.i&lt;n时,挑选反面向上的硬币抛,朝上朝下的概率都为0.5;2.i==n时,这时全部都是反面朝上,挑选一枚硬币抛,朝上朝下的概率都为0.5;这样就可以得出dp方程;dp[i][j]表示第i次抛,有j枚硬币朝上。i&lt;n时,dp[i+1][j] += dp[...

Avalon_cc的博客 303

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

GYM 101606 F.Flipping Coins(概率DP)

Description 初始有nnn枚硬币反面朝上排成一排,kkk次操作,每次选取一枚硬币掷向空中,该枚硬币落下后正面朝上和反面朝上的概率均为0.50.50.5,问采取最优方案的情况下,kkk次操作后正面朝上的硬币数量期望最大值 Input 两个整数n,k(1≤n,k≤400)n,k(1≤n,k≤400)n,k(1\le n,k\le 400) Output 输出kkk次操作后正面朝...

ZSQ 500

Gym 101606 F-Flipping Coins(概率dp)

题意有n个硬币排成一排,开始的时候所有的硬币都是正面朝下,你必须要扔K次硬币,每次选择一个硬币,如果你采取最优策略,K次以后朝上的硬币数的最大期望是多少? 随机变量X是指朝上的硬币数,当有N枚硬币的时候,X=0,1,2,3....N E(X)=1*p(1)+2*p(2)+....+n*p(n)。 要想求最大期望,我们在扔硬币的时候要遵循一个策略:尽量扔正面朝下的硬币 如果当前有0到n-1枚...

weixin_30687811的博客 96

Gym - 101606F Flipping Coins——dp

dp(i,j)表示扔i次j个硬币朝上的概率,然后就很好想了。。。#include &lt;cstdio&gt; #include &lt;cstring&gt; #include &lt;iostream&gt; #include &lt;algorithm&gt; #include &lt;cmath&gt; using namespace std; const int maxn = 500; ...

hao_zong_yin的博客 435

Gym 101606F Flipping Coins [ 递推 DP ]

题意:有n个硬币,排成一排,抛k次,一开始都是反面朝上,问正面朝上硬币的期望。思路:全程懵逼啊。。。。。----------------------------------------------------------------------------------------------------------------------随机变量X是指正面朝上的硬币的个数, 概率为p(X); X ...

howell 238

抛硬币 Flipping Coins(Gym - 101606F)(DP)

题意:给出N个硬币,开始均反面朝上。每次挑出其中一个抛,连续K次,求正面朝上的最大数学期望。----------------------------------------------------------------------------------------------------------------------由于是求最大数学期望,所以每次抛硬币即要优先选择反面硬币所以只有两种挑选...

戴某某 568

【UKIEPC2017:F题】Flipping Coins(抛硬币求正面朝上个数的期望----概率dp)

题目地址:https://codeforces.com/gym/101606 题意: N枚硬币,K次投掷次数,最初硬币全都正面朝下,求最终正面朝上的硬币个数的期望值,每次投掷都尽可能获得多的正面朝上的硬币数。 解题思路 dp[i][j]表示第i 次投掷j个正面朝上的概率 (0≤i≤n)就是结果 对于j: j<n时,选择正面朝下的抛,下一次投掷,正面朝上的硬币数增加一个或者...

Cassie_zkq的博客 2611

【概率DP】Gym - 101174 - D - Dinner Bet

题目链接http://codeforces.com/gym/101174 题意 NNN 个球标号为 111 到 NNN,两个人分别写下 CCC 个数字,每次随机选出 DDD 个球,若干次后,如果某个人写的 CCC 个数字都出现过,则游戏结束。问游戏持续回合数的期望。 题解 概率DP。 dp[i][j][k]dp[i][j][k]dp[i][j][k] 的状态表示两个人的公共数字有 kkk 个还没...

Eliot的博客 431

GYM 101086 K.Betrayed(树形DP+概率DP)

Description c棵树,每次从第一棵树开始搜,每次等概率选一个节点作为树根开始dfs,每次dfs花费时间为1秒,如果树的深度超过k则爆栈,需要debug3秒然后从头开始,问在不爆栈的情况下dfs完这c棵树的期望用时 Input 第一行一整数T表示用例组数,每组用例输入两个整数c和k表示树的数量和每次不爆栈的极限深度,之后c行每行首先输入一整数n表示该棵树的点数,然后输入n-1个整数,第

ZSQ 670

洛谷 P1443 马的遍历

题目大意: 有一个n*m的棋盘,在某个点上有一个马X,Y,要求你计算出马到达棋盘上任意一个点最少要走几步,输出一个n*m的矩阵,表示马到达某个点最少要走几步(左对齐,宽5格,不能到达则输出-1)。 1<=n,m,x,y<=400题解: bfs: 1.直接朝八个方向搜,如果搜过就退出,因为第一次搜的是最优解。 2.把答案转化成字符串然后按长度进行对齐, write(c,”:5-c);

生如夏花之绚烂 922
上一篇: 两种次短路
下一篇: 【gym 101606K】Knightsbridge Rises (最大流+打印路径)
Link_Ray
博客等级 码龄9年 44粉丝 156原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值