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

bzoj2369 区间(贪心+dp+决策单调性+分治) 首先我们可以贪心地发现,肯定是取两个区间,对于包含的区间肯定不如选最大的那个,因此把被包含的都去掉,但是要注意更新答案哟。 好了,我们只剩下一堆l,r都单增的区间了,我们考虑区间i,他的最优决策为wi(wi< i),我们可以发现wi是单调不降的。于是我们可以分治+决策单调性来做。 复杂度O(nlogn)O(nlogn) 阅读详情

题意:你试图把一些多米诺骨牌排成直线,然后推倒它们。但是如果你在放骨牌的时候不小心把刚放的骨牌碰倒了,它就会把相临的一串骨牌全都碰倒,而你的工作也被部分的破坏了。 比如你已经把骨牌摆成了DD__DxDDD_D的形状,而想要在x这个位置再放一块骨牌。它可能会把左边的一块骨牌或右边的三块骨牌碰倒,而你将不得不重新摆放这些骨牌。 这种失误是无法避免的,但是你可以应用一种特殊的放骨牌方法来使骨牌更多的向一个方向倒下。 给出你要摆放的骨牌数目,以及放骨牌时它向左和向右倒的概率,计算你为完成任务摆放的骨牌数目的平均数。假设你使用了最佳的摆放策略。 输入将包含至多100个测试点,每个测试点占一行,包含需要摆放的骨牌数目n (1≤n≤1000),以及两个非负实数Pl, Pr,表示骨牌向左和向右倒的概率。保证1<Pl+Pr≤0.5。 最后一个测试点包含一个数0。对于每个测试点输出题目要求的数目,保留两位小数。

期望大多数都是倒推, 这道题也不例外. 但是期望一直不熟, 这次也推了好久发现是错误的…其实是没有get到倒推里的末状态这个点. 末状态是全部摆好, 那么这也就意味着左边和右边都放好了, 最后一块骨牌放在中间没有倒. 我们设左边和右边已经摆好, 最后一块插在i处, 那么你有pl的几率把左边推到, pr的几率把右边推到. 但是在期望里边, 你如果有(1 - pl - pr)的几率不倒的话, 那么你期望摆 1/(1 - pl - pr)次就能成功不倒. 那么我们就可以计算每一次的期望, 乘上这个次数即可.

设放好i左边的骨牌期望次数为E1, 放好i右边期望为E2, 放完的期望是E. 那么首先, 你要先把左边和右边摆好, 那么就是 E = E1 + E2.

插入第i块, 你有pl可能向左边倒, 那就得花费E1将左边摆好, 有pr可能向右边倒, 要E2将右边摆好. 那么每一次的期望就是: (1 + pl * E1 + pr * E2). 1就是你放的第i块. 你一共期望放 1 / (1 - pl - pr)次, 那么就是 (1 + pl * E1 + pr * E2) / (1 - pl - pr).

合起来就是:

E = E1 + E2 + (1 + pl * E1 + pr * E2) /( 1 - pl - pr).

接下来枚举i, 用f[i]表示摆好i块骨牌的期望. 那么对于每个i的最佳摆放策略, 都是枚举j(0 <=j < i)取min得出来的. 那么f[n]就是答案, 复杂度O(n^2). 考虑优化, 由于我们看到在从小到大枚举j的时候, E1不断变大(左边骨牌数变多), E2变小, 其他的都是常数, 这说明了是求E是单峰的. 由于我们在外层从小到大枚举i, 枚举i和i+1时j相同的话, E1相同, E2的话i+1要比i的大, 其他的都是常数, 这说明了i+1与i整体相似, 且j相同时值更大, 那么f[i+1]的min值取的j一定比f[i]取min时的j要大. 那么j是单增的. 复杂度降到O(n).

#include<stdio.h>
int n;double pl, pr, f[1005];
inline double dp(int i, int j){
    return f[j] + f[i - 1 - j] + (1 + pl * f[j] + pr * (f[i - 1 - j]))/ (1 - pl - pr);
}
int main(){
    int i, j;
    while(scanf("%d", &n) && n){
        scanf("%lf%lf", &pl, &pr);
        for(i = 1, j = 0; i <= n; ++i){
            while(j < i - 1 && dp(i, j) > dp(i, j + 1)) ++j;
            f[i] = dp(i, j);
        }
        printf("%.2f\n", f[n]);
    }
}
UVA 10529 - Dumb Bones(概率+区间dp) UVA 10529 - Dumb Bones 题目链接 题意:你试图把一些多米诺骨牌排成直线,然后推倒它们。但是如果你在放骨牌的时候不小心把刚放的骨牌碰倒了,它就会把相临的一串骨牌全都碰倒,而你的工作也被部分的破坏了。 比如你已经把骨牌摆成了DD__DxDDD_D的形状,而想要在x这个位置再放一块骨牌。它可能会把左边的一块骨牌或右边的三块骨牌碰倒,而你将不得不重新摆放这些骨牌。 这种失 阅读详情

相关推荐

基于FPGA的工业相机项目大赏1——cmos线阵相机

●CMOS CL0402 作为图像传感芯片,曝光后产生一定格式的图像数据;●FPGA ZYNQ7020 作为主控芯片负责cmos驱动控制、图像像素的采集、cmos寄存器的配置、cameralink协议的实现、上位机串口通信的实现;●Cameralink端子实现图像数据的高速串行发送,将数据传送至采集卡PC端。系统工作流程如下: FPGA 上电加载配置程序,计算机通过异步串口向 FPGA 发送控制信息,FPGA对接收的控制信息进行分析判断。

weixin_41895751的博客 6397

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

工业视觉开发者的福音:用C#玩转VisionMaster算子(非方案版完整教程)

本文为工业视觉开发者提供了一份完整的C#与VisionMaster算子二次开发教程,详细介绍了环境配置、算子调用原理、性能优化技巧及实战案例。通过模板匹配和二维码识别等实例,展示了如何高效集成VisionMaster算子到现有框架中,提升工业自动化视觉检测系统的灵活性和性能。

weixin_29280657的博客 270

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

SpringBoot+Maven打包实战:把项目变成SDK供其他团队调用

本文详细介绍了如何将SpringBoot项目改造并打包成可被其他项目依赖的SDK。通过调整Maven配置,剥离SpringBoot父依赖与启动类,并定制打包插件,最终生成标准的JAR依赖库,实现从“可执行应用”到“组件化SDK”的优雅转变,便于团队间功能复用。

assembly8low的博客 825

安卓-折叠屏平行视界适配(多厂商兼容与优先级实战)

本文详细解析了安卓折叠屏平行视界适配的现状与挑战,重点探讨了多厂商兼容性策略和优先级冲突的实战解决方案。通过对比Google的Embedding方案和国内厂商的EasyGo标准,提供了检测设备支持方案、处理优先级冲突及双方案共存的最佳实践,帮助开发者高效完成折叠屏适配。

weixin_29190169的博客 161

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

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

袋鼠与蒟蒻 1345

网表导入virtuoso后发现pg pin忘记connect_pg_net/globalNetConnect怎么办?

数模混合项目中经常需要一些需要到virtuoso去连接的线,比如IO上的pg和一些信号线,除了在pr工作中设置skip route之外还需要做好net的赋值,告诉工具虽然我没在物理上有连接,但是实际上应该连什么net,这部分提现在网表里。在Default Net Name中也填写net name,因为这个net需要做global操作,即在顶层定义这个net,所以需要在net name后加个!打开schematic,删除指定cell pin所接net的label。

m0_61544122的博客 967

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

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

qq_42754826的博客 269

FPGA上的时间数字转换器(TDC):详细概述及FPGA开发

本文对基于FPGA的时间数字转换器(TDC)进行了详细的概述,并提供了一个简单的示例代码,展示了如何在FPGA上实现TDC功能。在本文中,我们将详细概述基于FPGA的TDC,并提供相应的源代码示例,以帮助读者理解和实现这一功能。需要注意的是,这只是一个简单的示例,实际的TDC设计可能需要更多的功能和优化,以满足特定的需求。读取和重置:最后,测量结果可以通过读取计数器的值来获取,并且在每次读取后需要将计数器重置为零,以便进行下一次测量。TDC的基本原理是测量信号的到达时间与参考时钟之间的时间差。

EsqpWeller的博客 6861

30天Python入门(第一天:Python入门)

30天带你入门Python,这是第一天

Science prince的博客 582

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

知识图谱:综述

第一种理解:知识图谱本质上是语义网络。本体论是语义网络中最重要的一个要素。第二种理解:知识图谱也叫做多关系图,由多种类型的节点和多种类型的边组成。课程以第二种理解为主。

u013250861的博客 478

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

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

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

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

UVA 10529 Dumb Bones 概率dp 求期望

题目链接:点击打开链接 题意: 要在一条直线上摆多米诺骨牌。 输入n, l, r 要摆n张排,每次摆下去向左倒的概率是l, 向右倒的概率是r 可以采取最优策略,即可以中间放一段,然后左右两边放一段等,摆放顺序任意。 问:在最佳策略下要摆成n张牌的期望次数。 思路: 点击打开链接 #include #include #include #include #incl

九野的博客 1694

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

UVa 10529 Dumb Bones 期望DP

题目传送门dalao讲解其实其实比较水,我们只需要列出一个总式子就可以了,用dp[i]表示拼出长度为i的多米诺骨牌需要至少多少次,于是我们枚举一个中间点作为拼成i块多米诺的最后一块,于是我们用El表示拼好左边长度的期望最少次数,Er表示拼好右边长度的期望最少次数,则显然如果我现在不倒的话,有拼好i块长度为Ei 则 Ei = El + Er + 1 这点是显然的,然而无论倒不倒,左边倒或者右边倒

Monica 1078

UVA10529 Dumb Bones

UVA10529 Dumb Bones go to solution 设$f[i]$表示叠$i$个的骨牌的期望 $O(n)$做法 #include<iostream> #include<cstdio> #include<cstring> #define re register using namespace std; double...

dingqiongliang0363的博客 204

【概率DP入门】

http://www.cnblogs.com/kuangbin/archive/2012/10/02/2710606.html 有关概率和期望问题的研究 摘要 在各类信息学竞赛中(尤其是ACM竞赛中),经常出现一些与概率和期望有关的题目。这类题目需要较高的数学水平和一定的算法技巧,必须经过仔细分析,选择合适的数学模型和算法才能顺利的解决问题。本文就对这类题目的一些常见方法进行...

weixin_33834628的博客 615

【BZOJ4709】柠檬(JSOI2011)-决策单调性优化DP+单调栈

测试地址:柠檬 做法:本题需要用到决策单调性优化DP+单调栈。 首先需要发现一个结论:最优方案中被分成的每一段的头尾贝壳的大小应该是相同的,并且这一段中产生贡献的就是这个大小。因为如果上面条件中有一个不满足,我们把某个端点单独分成一个段就比这个方案更优了。于是我们令f(i)f(i)f(i)为前iii个贝壳能得到的最大答案,有以下状态转移方程: f(i)=max{f(j−1)+sj(sum(i...

Maxwei_wzj的OI世界 648

HDU 5396 Expression (数学期望+区间DP)

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5396 题意: 给定一个有n个数字,运算符只有"+","-","*"的表达式,每次合并相邻两项,求所有合并方式所得到的结果之和对1e9+7取模的值。 分析: 如果将这个过程随机化,每次等概率选择相邻两项, 记dp[i][j]为随机合并第i个到第j个数字这一段的表达式之后

quailty's 1559

UVa 10529 : Dumb Bones(期望DP)

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

DZYO的博客 730

NOIP模拟赛 四校联考 递推 + 分类讨论 + 树上期望

NOIP 模拟题 题目名称兔子被子蚊子 源程序文件名rabbit.cpp quilt.cpp mosquito.cpp 输入文件名rabbit.in quilt.in mosquito.in 输出文件名rabbit.out quilt.out mosquito.out 每个测试点时限1s 1s 5s 内存限制512MB 512MB 512MB 测试点数目10

Le Petit Prince 935

[BZOJ]3143 游走 期望 + 高斯消元

3143: [Hnoi2013]游走 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 3110  Solved: 1365 [Submit][Status][Discuss] Description 一个无向连通图,顶点从1编号到N,边从1编号到M。  小Z在该图上进行随机游走,初始时小Z在1号顶点,每一步小Z以相等的概率随机选 择

Le Petit Prince 631

[BZOJ]4720 换教室 [NOIP2016] D1T3 期望

4720: [Noip2016]换教室 Time Limit: 20 Sec  Memory Limit: 512 MB Submit: 1110  Solved: 577 [Submit][Status][Discuss] Description 对于刚上大学的牛牛来说,他面临的第一个问题是如何根据实际情况申请合适的课程。在可以选择的课程中,有2n节 课程安排在n个时间段上。在第

Le Petit Prince 630
上一篇: [BZOJ]2437 [NOI2011] 兔兔与蛋蛋 二分图博弈
下一篇: [BZOJ]1026 [SCOI2009] windy数
MaxMercer
博客等级 码龄10年 55粉丝 261原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值