uva10529 概率dp+区间dp

UVA 10529 - Dumb Bones(概率+区间dp) UVA 10529 - Dumb Bones 题目链接 题意:你试图把一些多米诺骨牌排成直线,然后推倒它们。但是如果你在放骨牌的时候不小心把刚放的骨牌碰倒了,它就会把相临的一串骨牌全都碰倒,而你的工作也被部分的破坏了。 比如你已经把骨牌摆成了DD__DxDDD_D的形状,而想要在x这个位置再放一块骨牌。它可能会把左边的一块骨牌或右边的三块骨牌碰倒,而你将不得不重新摆放这些骨牌。 这种失 阅读详情

这道题有点绕,至少思考过程还是比较复杂的。

1.题意是要求寻找一个最优的期望,一想到最优,就会联想到枚举,但怎么枚举?

由题意可以发现可以枚举最后放的那个牌,为什么?因为这样对两边影响最小,只有当你两边都完成后才可以去计算中间那个值,这一步是区间dp的核心思想,将所有情况都归类到枚举的牌位置左右都有区间的情况去计算。

2.如何计算?

这个也是比较麻烦的。首先这个不像一般的概率dp直接用dp[i]表示放完i个牌后的期望,而是要将这个dp[i]分开计算。

具体的公式什么的见点击打开链接




#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>

using namespace std;
const int maxn = 1005;
const double INF = 0x3f3f3f3f3f3f3f;

int N;
double pl, pr, dp[maxn];

double solve () {
    double ac = 1 - pl - pr;

    for (int i = 1; i <= N; i++) {
        dp[i] = INF;
        for (int j = 0; j < i; j++) {
            double tmp = dp[i-j-1] * pl + dp[j] * pr;
            tmp = dp[j] + dp[i-j-1] + (tmp + 1) / ac;
            if (tmp < dp[i])
                dp[i] = tmp;
        }
    }
    return dp[N];
}

int main () {
    while (scanf("%d", &N) == 1 && N) {
        scanf("%lf%lf", &pl, &pr);
        printf("%.2lf\n", solve());
    }
    return 0;
}


Unity事件总线第一篇:为什么你的游戏需要一个事件总线? 本文探讨了游戏开发中常见的跨模块调用导致代码强耦合的问题。通过一个攻击按钮触发角色攻击、怪物掉血和血条更新的案例,分析了直接调用方式带来的维护困难、扩展性差和模块重用性低等弊端。文章提出使用事件总线(Event Bus)作为解决方案,通过发布-订阅模式实现模块解耦。重构后的代码中,各模块只需与事件总线交互,彼此不再直接依赖。这种设计使得新增功能(如音效)无需修改现有代码,大大提高了系统的可维护性和扩展性,同时增强了模块的重用性,完美体现了开闭原则。 阅读详情

相关推荐

Unity动画状态机实战:Trigger和Bool参数到底怎么选?附5个常见场景解析

本文深入解析Unity动画状态机中Trigger和Bool参数的核心差异与应用场景。通过对比两者在描述瞬时事件与持续状态上的本质区别,并结合角色移动、攻击连招、跳跃落地、受击死亡及环境交互等5个实战场景,提供了清晰的选择逻辑与避坑指南,帮助开发者构建更健壮、易维护的动画逻辑。

weixin_29009501的博客 120

【区间dp,概率dp】

http://vjudge.net/contest/77874#overview kuangbin 带你飞-专题22 区间dp我是没做完,感觉简单的会了,深入留着给今年比赛打完再学吧。 poj 2955 最大矩阵连乘数#include<iostream> #include<stdio.h> #include<string.h> #include<map> using namespace std

qq_24664053的博客 661

【Attention Is All You Need】Transformer模型精读

Attention Is All You Need》这篇论文奠定了Transformer模型的基础,为深度学习的发展提供了新的方向。Transformer通过自注意力机制和并行化处理显著提升了计算效率和模型性能。然而,Transformer的广泛应用也带来了新的挑战,如计算资源的消耗和对长序列的处理能力等。随着技术的不断发展,研究人员已经提出了诸如Efficient Transformer、Reformer等变种,旨在提升Transformer的效率和适应性。

Lewiz_124的博客 1499

关于概率dp的个人理解与总结

首先,概率dp主要解决的是关于概率问题和期望问题的求解。

Enmity_Dark 4432

Chamfer Loss

ChamferLoss是一种常用于3D点云(pointcloud)处理的损失函数,特别是在点云生成和对齐任务中。它的目的是度量两个点集之间的相似度,特别是在点云重建、配准或生成等任务中,常用于优化模型使得生成的点云更接近真实的点云。

夜空中明亮的星的专栏 455

【nvidia-B200 生产环境】NVIDIA 570.124.06+Cuda12.8 Ubuntu22.04 nccl-test 一键部署脚本(免修改复制即用)

目录1. 初始化与日志记录2. 安装基础工具与配置更新3. NVIDIA 驱动安装 570.124.064. 安装 Mellanox OFED 24.10-2.1.8.05. 安装 CUDA 12.86. 安装 NCCL 和测试7. 配置 rc.local 和其他优化8. B200 单独步骤9. 最终测试与重启10. 完整生产脚本,复制即可直接使用总结 功能: 设置日志目录和日志文件路径。 使用 命令将标准输出和错误输出同时写入日志文件和终端。 记录脚本开始时间,并计算开始的秒数

jundao1997的专栏 2797

【区间dp+组合数+数学期望】Expression

https://www.bnuoj.com/v3/contest_show.php?cid=9148#problem/I 【题意】 给定n个操作数和n-1个操作符,组成一个数学式子。每次可以选择两个相邻操作数及中间的操作符进行运算,如a-b变成一个数(a-b),直到这个式子变成一个数。同一个初始式子可以进行不同的操作,最后的结果也可能不同。最后求不同操作得到结果的和(mod 1000 000 ...

weixin_30593443的博客 265

为什么先进工艺需要check那么多corner?

那么hold slack = launch clock path delay + data path delay - capture_clock_path_delay = -capture_clock_path_delay,也就是说,capture clock path delay越大,hold越难满足。而且,我们在设计的时候,一般clock频率都会过约,所以是有较大的margin的。有的foundry还会对rc的取值范围进行了约束,如cworst_T,采用的是1.5 sigma的取值范围。

芯冰乐 2084

CodeForces 54 C.First Digit Law(概率DP)

Description 给出nnn个区间[Li,Ri][Li,Ri][L_i,R_i],aiaia_i是等概率从第iii个区间中选取的一个数字,问a1,...,ana1,...,ana_1,...,a_n中有至少K%K%K\%的数最高位为111的概率 Input 第一行一整数nnn表示区间个数,之后nnn行每行输入两个整数Li,RiLi,RiL_i,R_i表示第iii个区间,之后输入一整数K...

ZSQ 439

【linux】解决报错:Network error: Connection refused

【linux】解决报错:Network error: Connection refused

weixin_44502754的博客 4936

AI学习指南RAG篇(19)-API调用与集成

通过上述API调用示例,您可以方便地将RAGFlow与其他系统集成,实现数据集管理、文档处理、会话管理等功能。希望本文的介绍能帮助您更好地理解和使用RAGFlow的API。

俞兆鹏的博客 2543

uva 10529 - Dumb Bones(概率+区间dp)

题目连接:uva 10529 - Dumb Bones 题目大意:给定n,表示要放n个骨牌,每次放下骨牌,有可能向左倒的概率为pl,向右倒的概率为pr,如果倒下,会将那一侧的骨牌全部推倒,可以选择位置先后放骨牌,问说一种放骨牌次数最少的期望是多少。 解题思路:dp[i]表示放i个骨牌需要的步数期望,维护一个最优放的位置,dp[i] = min\{ (从i-1到i的步数)} + (0到i

不慌不忙、不急不躁 2109

SAP 批次管理(分割评估)

批次分割评估: 业务场景:企业要求各批次物料成本价格不一样。此时可以采用分割批次来实现不同成本 后台配置: (1)、激活分割评估 后台---物料管理----评估与科目设置---分割评估-----激活分割评估 (2)、配置分割评估 后台---物料管理----评估与科目设置---分割评估-----配置分割评估 进入全局性分类后,批次分割采用已有的评估类型“X自动(批)”: ...

willieyuan的博客 1万+

[dp][概率与期望dp]Dumb Bones

UVA10529(洛谷) 【题目描述】 你正在尝试用多米诺骨牌搭成一条直线,以便最后试验时推倒它们 (确实,搭建某些东西仅仅为了推倒看上去没啥意义,但你有一些奇怪的爱好) 然而你在搭建过程中可能会弄倒骨牌,这将波及到邻近的部分 现在需要你来求将骨牌搭建完成所需的期望步数 【输入】 若干组数据,以0结尾 一个整数n(1 \leq n \leq 1000)(1≤n≤1000) 表示你需要搭的骨牌数量 ...

qq_42754826的博客 269

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

uva 10529 Dumb Bones 区间期望dp ★★

题意:现在要铺设多米诺骨牌,放置一次左倒的概率是PL,右倒的概率是PR,他们的和不超过0.5。现在用最优的铺设方法,问铺好n(n<=1000)张牌放置次数的期望。

便纵有千种风情 793

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

UVA10529 Dumb Bones(区间期望dp??)

LINK 定义f[i][j]f[i][j]f[i][j]表示区间[i,j][i,j][i,j]中的牌都摆放完成的最小期望次数 每次枚举一个端点kkk放在这里 设往左边倒的概率是p1p_1p1​,往右边倒的概率是p2p_2p2​,不倒的概率是p3p_3p3​ f[i][j]=p1∗(2∗f[i][k−1]+f[k+1][j]+1)+p2∗(2∗f[k+1][j]+f[i][k−1]+1)+p3∗(f[i][k−1]+f[k+1][j]+1)f[i][j]=p_1*(2*f[i][k-1]+f[k+1][j]

jziwjxjd的博客 454

UVA 10529-Dumb Bones(概率dp)

题意: 给出放一个多米诺骨牌,向左向右倒的概率,求要放好n个骨牌,需要放置的骨牌的期望次数。 分析: 用到区间dp的思想,如果一个位置的左面右面骨牌都已放好,考虑,放中间的情况, dp[i]表示放好前i个骨牌,要放的期望次数,枚举1-i,每个点做中间点求对应的期望,取最小值。 dp[i]=min(L*dp[l]+R*dp[r]+1/(1.0-L-R)); #include <...

weixin_30848775的博客 134

[UVA]10529 Dumb Bones 期望 + 区间DP DP函数单调性优化

题意:你试图把一些多米诺骨牌排成直线,然后推倒它们。但是如果你在放骨牌的时候不小心把刚放的骨牌碰倒了,它就会把相临的一串骨牌全都碰倒,而你的工作也被部分的破坏了。 比如你已经把骨牌摆成了DD__DxDDD_D的形状,而想要在x这个位置再放一块骨牌。它可能会把左边的一块骨牌或右边的三块骨牌碰倒,而你将不得不重新摆放这些骨牌。 这种失误是无法避免的,但是你可以应用一种特殊的放骨牌方法来使骨牌更多的向一个

Le Petit Prince 517

UVa 10529 - Dumb Bones

分析和提示可以看我的一篇总结性文章 UVa 10529 #include #include #include #include #include #include #include #include #include using namespace std; const int maxn = 1100; double pl , pr; double d[m

Fuxey 1441

【UVA 10529】多米诺骨牌(Dumb Bones)(BSOI4920)

【UVA 10529】多米诺骨牌(Dumb Bones) Description         你试图把一些多米诺骨牌排成直线,然后推倒它们。但是如果你在放骨牌的时候不小心把刚放的骨牌碰倒了,它就会把相临的一串骨牌全都碰倒,而你的工作也被部分的破坏了。比如你已经把骨牌摆成了DD__DxDDD_D的形状,而想要在x这个位置再放一块骨牌。它可能会把左边的一块骨牌或右边的三块骨牌碰

袋鼠与蒟蒻 1345

状态压缩 uva11795

题意:第一行数据总数 接下来输入机器人个数 再一行告诉你人能杀死哪些机器人, 再n行告诉你机器人的武器能怎么互相杀死 思路:状态压缩+dp 伪转移方程:dp【当前状态】=sum{dp[不杀死机器人i的状态]},(其中i属于[0,n]) 批注比较多的代码 #include using namespace std; int attack[17];//每个机器人能杀死的其他

hyc10的博客 314

UVA10529 Dumb Bones

题目:Dumb Bones 题意: 来自luogu—— 你正在尝试用多米诺骨牌搭成一条直线,以便最后试验时推倒它们 (确实,搭建某些东西仅仅为了推倒看上去没啥意义,但你有一些奇怪的爱好) 然而你在搭建过程中可能会弄倒骨牌,这将波及到邻近的部分 现在需要你来求将骨牌搭建完成所需的期望步数 思路: 令f[i]表示连续i个骨牌搭建的期望步数。 枚举已经搭建了i-1个骨牌,还剩k第k个位...

iwi 260

uva 10529 - Dumb Bones(概率dp)

Problem D: Dumb Bones You are trying to set up a straight line of dominos, standing on end, to be pushed over later for your entertainment. (Sure, it seems pointless to set something up only to knock

勿忘初衷 1288

UVa10529 Dumb Bones ( 期望概率DP )

UVa10529 Dumb Bones原题地址:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1470题意: 你试图把一些多米诺骨牌排成直线,然后推倒它们。但是如果你在放骨牌的时候不小心把刚放的骨牌碰倒了,它就会把相临的一串骨牌全都碰倒,而你的工作也被部

Bfk的博客 739

UVA10529 Dumb Bones -(数学期望,DP)

额,看见很多大佬写了DP,然后这里提供一个记忆化搜索的方法 最开始的想法 对于一段区间[i,j],往里面插入第j−i+2j-i+2j−i+2块骨牌,最后复杂度是O(n3)O(n^3)O(n3),转移方程: f[i][j]=min(f[i][k−1]×1−pr1−pl−pr+f[k+1][j]×1−pl1−pl−pr+11−pl−pr)(i&lt;k&lt;j)f[i][j]=min...

china_xyc的博客 267
上一篇: uva10859 树形dp
下一篇: hdu 4666 线段树+最大曼哈顿距离
labrother
博客等级 码龄11年 2粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值