ZOJ 3582 Back to the Past [概率DP]

Deepseek+Word插件:一键搞定论文翻译与润色的学术写作新革命 本文介绍了Deepseek Word插件如何革新学术写作流程,实现论文翻译与润色的一键操作。该插件深度集成于Word环境,能智能完成中英互译、语法修正、术语统一及逻辑优化,显著提升写作效率与文本质量,是研究者的高效AI助手。 阅读详情

Description

Recently poet Mr. po encountered a serious problem, rumor said some of his early poems are written by others. This brought a lot of trouble to Mr. po, so one day he went to his best friend MasterO for help. MasterO handed over a small wooden box with a silent smile. Mr. po checked the box, a word "YGBH" carved on the side. "The box can take you back to the past," MasterO said, "so you can get any evidence you need. But, before that, you need some patience."

There are N tiny dark holes on both sides of the box (2N holes in total). Every day, for each hole, there is a possibility P to successfully absorb the power of moon and then magically sparkle. The possibilities among holes are independent in each day. Once a hole sparkles, it will never turn dark again. The box only works when there are no less than M sparkling holes on each side of the box. The question is that what is the expected number of days before the box is available.

Input

The input consists of several test cases. For each case there are 3 numbers in a line: N, M, P. 1 ≤ N ≤ 50, 1 ≤ M ≤ N, 0.01 ≤ P ≤ 1. A case with three zeros indicates the end of the input.

Output

For each test case, output the expected number of days, accurate up to six decimal places.

题意:

现有一月光宝盒,盒子上两面各有孔N枚,一开始孔都是暗的,每一天每个孔都有等概率P的机会亮起(已亮起的不会再熄灭),当两面亮起的孔各不少于M个,就会回到过去,问你回到过去前所需要的天数的期望。

范围:

N,M<=50

解法:

概率DP,设DP[I][J]为一面亮起I个孔,另一面亮起J个孔时,还需要的天数期望,可知DP[I>=M][J>=M]=0

分析可得,对于第一面来说,剩下N-I个孔,亮起K个的概率为C(N-I,K)*p^K *(1-P)^(N-I-K)

那么DP[I][J]=ΣΣ (DP[I+K][J+L]*P(I,L)) +1 +P(0,0)*DP[I][J]

其中 K,L不同时等于0,P(a,b)表示这一天第一面亮起a个,且第二面亮起b个孔的概率,计算方法为将各自亮起的概率(公式如前)相乘(因为满足乘法原则,相互独立且同时发生)

化掉右边的DP[I][J]得

DP[I][J]=( ΣΣ (DP[I+K][J+L]*P(I,L)) +1 )/(1-P(0,0))

时间复杂度为O(N^4)

代码:

实现DP用了记忆化搜索

#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<math.h>
#include<iostream>
#include<stdlib.h>
#include<set>
#include<map>
#include<queue>
#include<vector>
#include<bitset>
#pragma comment(linker, "/STACK:1024000000,1024000000")
template <class T>
bool scanff(T &ret){ //Faster Input
    char c; int sgn; T bit=0.1;
    if(c=getchar(),c==EOF) return 0;
    while(c!='-'&&c!='.'&&(c<'0'||c>'9')) c=getchar();
    sgn=(c=='-')?-1:1;
    ret=(c=='-')?0:(c-'0');
    while(c=getchar(),c>='0'&&c<='9') ret=ret*10+(c-'0');
    if(c==' '||c=='\n'){ ret*=sgn; return 1; }
    while(c=getchar(),c>='0'&&c<='9') ret+=(c-'0')*bit,bit/=10;
    ret*=sgn;
    return 1;
}
#define inf 1073741823
#define llinf 4611686018427387903LL
#define PI acos(-1.0)
#define lth (th<<1)
#define rth (th<<1|1)
#define rep(i,a,b) for(int i=int(a);i<=int(b);i++)
#define drep(i,a,b) for(int i=int(a);i>=int(b);i--)
#define gson(i,root) for(int i=ptx[root];~i;i=ed[i].next)
#define tdata int testnum;scanff(testnum);for(int cas=1;cas<=testnum;cas++)
#define mem(x,val) memset(x,val,sizeof(x))
#define mkp(a,b) make_pair(a,b)
#define findx(x) lower_bound(b+1,b+1+bn,x)-b
#define pb(x) push_back(x)
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;

double dp[55][55];
bool vis[55][55];
int n,m;
double p,px[111],p1[111];
ll c[55][55];
void init(){
    px[0]=p1[0]=1.0;
    rep(i,1,100){
        px[i]=px[i-1]*p;
        p1[i]=p1[i-1]*(1.0-p);
    }
    rep(i,0,50)c[i][0]=1;
    rep(i,1,50)
    rep(j,1,i){
        c[i][j]=c[i-1][j-1]+c[i-1][j];
    }

}
double dfs(int a,int b){
    if(a>=m&&b>=m)return 0.0;
    if(vis[a][b])return dp[a][b];
    vis[a][b]=1;
    double p0=double(c[n-a][0])*px[0]*double(c[n-b][0])*p1[n-a+n-b];
    dp[a][b]=1.0/(1.0-p0);
    rep(i,0,n-a){
        rep(j,0,n-b){
            if(i==0&&j==0)continue;
            double f=double(c[n-a][i])*px[i+j]*double(c[n-b][j])*p1[n-a-i+n-b-j]/(1.0-p0);
            dp[a][b]+=f*dfs(a+i,b+j);
        }
    }
    return dp[a][b];
}
int main(){
    while(scanf("%d%d%lf",&n,&m,&p)!=EOF){
        if(n==0||m==0)break;
        init();
        mem(vis,0);
        mem(dp,0);
        double ans=dfs(0,0);
        printf("%.6lf\n",ans);
    }
    return 0;
}
/*
2
500 2 2 2 1 1 1
*/






YOLO11-Seg优化:卷积变体系列篇 | 动态蛇形卷积(Dynamic Snake Convolution) | ICCV2023 动态蛇形卷积(Dynamic Snake Convolution),增强微小特征提取能力,引入到YOLO11-Seg,与C3k2结合实现二次创新 阅读详情

相关推荐

全球半导体设备氧化钇熔射服务行业规模预测:预计未来六年CAGR为7.8%

本文将对“半导体设备氧化钇熔射服务”行业进行深度分析,探讨市场趋势的演变、核心竞争者的战略布局、供应链结构的内外特点、研发创新的最新进展、法规政策环境的适应性调整以及投资机会与风险评估。这一稳健的增长趋势表明半导体设备氧化钇熔射服务在电子行业中的重要性逐渐增强。由于全球对于高效、高精度和可靠的电子解决方案的需求增加,对能够提供这些功能的半导体设备氧化钇熔射服务的需求日益增长。由于半导体设备氧化钇熔射服务主要为就地服务型,其“配送”主要依赖于专业团队和技术设备的及时调配,强调服务的时效性和高质量。

CC1239777的博客 570

ZOJ 3582 概率DP

【题目链接】 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4624【解题报告】 左右各有n个灯,灯亮的概率为P,是独立事件。且灯打开后就不会熄灭。 问两遍各至少m个亮的期望。 照例用递推。 设dp[i][j]表示左边亮i个右边亮j个这个状态能够达到目标状态的期望。 易知:dp[i][j]=sigma{ p*dp

gungnir0711的博客 215

ROS2 -Jazzy 一步一步(第一步_工作空间以及编译)

文件夹作用特点是否需要手动创建/维护src存放自己写的 ROS 2 包一个 workspace 可以有多个包需要手动创建build保存编译过程中的中间文件每个包生成对应子目录自动生成,可删除install保存编译完成后的功能包每个包有独立子目录,含可执行文件自动生成,可删除log保存编译日志用于查看错误原因、调试自动生成,不需修改colcon是 ROS 2 推荐使用的构建工具自动处理功能包的依赖和编译顺序一条命令就能编译整个工作空间。

jerrykorea的博客 1380

ZOJ3582:Back to the Past(概率DP)

Recently poet Mr. po encountered a serious problem, rumor said some of his early poems are written by others. This brought a lot of trouble to Mr. po, so one day he went to his best friend MasterO for

ACM!荣耀之路! 1332

在 Windows 10 中通过 WSL2 安装 vLLM 部署本地大模型的方法和步骤

通过 WSL2 在 Windows 10 中部署 vLLM 的核心优势是兼顾 Windows 生态与 Linux 环境的 GPU 加速能力,适合需要在 Windows 下开发但依赖 vLLM 高性能推理的场景。相比原生 Windows 部署(Ollama 等工具),该方案性能更优(接近原生 Ubuntu),且支持更大模型和量化优化。若追求极致性能,建议直接使用 Ubuntu 系统;若必须依赖 Windows 工具链,WSL2 + vLLM 是当前最优选择。

当 AI 开始写文章、绘星空,甚至预测未来,您还在旁观吗?这里将剖开人工智能的思考逻辑,拆解 AI 创作的底层密码,也聊聊人工智能里的人文温度。每篇都有让你拍案的细节,快来解锁 AI 时代的神奇世界! 3753

交换机四种光互联技术:OIO、OBO、NPO与CPO

在过去几十年里,数据中心交换机主要依赖电信号通过铜线进行数据传输。然而,随着数据传输速率从100Gbps向400Gbps、800Gbps甚至1.6Tbps迈进,传统电互联(Electrical Input & Output, EIO)面临三大瓶颈:信号衰减、功耗激增和空间限制。例如,高速信号在长距离铜线传输中会产生严重的信号失真,迫使设计者加入数字信号处理器(DSP)来补偿信号衰减,这进一步推高了功耗和成本。此外,传统可插拔光模块的体积较大,限制了端口密度,难以满足现代数据中心对高带宽密度的需求。

网络技术联盟站 3128

ZOJ 3582 Back to the Past(概率DP)

题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4624 题意:A和B上各有n盏灯,初始时都是灭的。已知每天每个灯亮的概率为p。且亮了以后就不会再灭了。求A和B上各有不少于m盏灯亮的天数期望。 思路:f[i][j]表示分别还有i个和j个是灭的期望。 import java.util.*; import ja...

weixin_34290390的博客 136

推荐系统(十六):基于ESMM的商品召回/推荐系统

ESMM(Entire Space Multi-Task Model)是阿里巴巴提出的多任务学习框架,通过联合建模点击率(CTR)和点击转化率(CVR)解决传统CVR模型样本稀疏问题。其核心思想是将 CVR 定义为 CTR 与 CTCVR 的条件概率,模型包含两个子任务。

Jin_Kwok的博客 1265

ZOJ 3582 Back to the Past 概率DP

题意:一开始脑残吧组合数公式算错了,要先把c[i][i]和c[i][0]赋1才行。 又是条件概率,要计算灯亮的概率是,灯的位置也必须考虑在内的 #include #include const int LMT=55; double dp[LMT][LMT],p,myp[LMT],nmyp[LMT],c[LMT][LMT]; //考虑位置啊。。。 void init(void) {

uiiの技术随笔 879

A*搜索算法在三维路径规划(避障)中的MATLAB实现与Python实现

A star algorithmA*搜索算法简介A*搜索算法的Python简化代码MATLAB实现启发函数回溯轨迹RRT算法对比A\*算法在三维路径规划中的一些不足 A*搜索算法简介 A*搜索算法是Greedy Best-First算法的改进,因为Greedy Best-First算法只考虑将预估距离(当前节点到目标点的预估距离)作为遴选开节点集的条件。即: priority=heuristic(goal,next)priority=heuristic(goal, next)priority=heurist

ZYunfei的博客 2万+

代谢组数据分析(十五):基于python语言构建PLS-DA分类预测模型

本教程阐述典型代谢组学数据分析工作流程,用于二元分类结果的研究。流程主要步骤如下:首先从 Excel 表格导入代谢物与实验数据,接着基于汇总 QC 进行数据清洗。随后借助主成分分析可视化检查数据质量,再开展两类单变量统计。之后运用偏最小二乘判别分析(PLS - DA)实施多变量分析,此过程涵盖模型优化(对比 R2 与 Q2)、置换测试及明确模型预测指标、确定特征重要性、对模型预测数据进行可视化。最终将统计表格导出至 Excel 表格,完整呈现从数据导入到分析结果输出的全过程。

专注生信领域 2875

zoj 3582 Back to the Past (概率dp)

题意给出一个余光宝盒(汗!)左右都有n个洞,每个洞亮的概率相同为p 求至少剩下m等的期望 四重循环枚举,暴力dp 设dp[i][j]表示左边i个亮,右边j个亮到达目标的期望 #include #include #include #include #include #include #include #include #include #include using namespace s

ACM之梦 570

SAPGUI excel 导出时遇到的运行时错误:STRING_SIZE_TOO_LARGE

当报表导出需求远超单一 XLSX 文件的物理承载力时,与其在 SAPGUI 中硬拼 2 GB 限制,不如把分页、过滤、流式写入作为设计前提。掌握 ABAP2XLSX 或 CSV + Power Query 等工具链,既能满足审计合规,又能让应用服务器远离的噩梦。祝你在下一次导出海量数据时,既高效又优雅。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 639

ZOJ 3582 Back to the Past (概率dp)

OJ题目:click here~~ 题目分析:

800

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

ZOJ3582-Back to the Past-概率dp

一共左右两排共2N盏灯,计算每排都亮M盏以上的期望。每天每盏灯有P的概率点亮。 dp[i][j]记录左边i盏右边j盏时的期望,从dp[N][N]往前推。//没学概率论写的好懵逼。 1 #include <cstdio> 2 #include <cstring> 3 #include <iostream> 4 #include <...

weixin_30784501的博客 124

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

ZOJ 3582 Back to the Past

dp[i][j]记录从当前状态到结束状态的期望。。。 dp[i][j]=1+segma( dp[i+a][j+b]*P(a,b) )   a  0..n-i   b  0..n-j 递归就可以了,a==0&&b==0的时候要特判一下 Back to the Past Time Limit: 2 Seconds      Memory Limit: 65536 KB      Spe

码代码的猿猿 1843

怀旧版电脑GBC模拟器

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

ZOJ3582 Back to the Past

概率DP 用dp[i][j]表示当前两边分别有i和j个亮的,此时到目标的期望。有: dp[i][j] = 0 (i >= m && j >= m) dp[i][j] = 1 + sigma(dp[i+a][j+b] * p) ,a>=0 && b>=0,p根据组合数算一下就行了,带环移项消一下也就行了 幸好这题对精度要求不太高= = #include #include #

Strawberry fields forever 604

Back to the Past ZOJ-3582 期望DP

Back to the Past solution Cnm=Cn−1m−1+Cn−1mC_n^m=C_{n-1}^{m-1}+C_{n-1}^{m}Cnm​=Cn−1m−1​+Cn−1m​ dp[i][j]=∑u=0i+u≤n∑v=0j+v≤ndp[i+u][j+v]Ci+uupuqiCj+vvpvqj+dp[i][j]Ci0qiCj0qj+1dp[i][j]=\sum\limits_{u=0}^{i+u≤n}\sum\limits_{v=0}^{j+v≤n}dp[i+u][j+v]C_{i+u}^up^

qq_46173805的博客 133

ZOJ3582---Back to the Past

Back to the Past Time Limit: 2 Seconds      Memory Limit: 65536 KB      Special Judge Recently poet Mr. po encountered a serious problem, rumor said some of his early poems are written by oth

Alex 913

对于一类离散的概率DP问题的总结(第一次)

——对最近做的一些简单概率DP题的总结

Asuna_acmer 993

HDU 5236 Article [概率DP]

As the term is going to end, DRD begins to write his final article. 你现在要打n个字符,但是程序随时可能会崩溃。你可以在恰当的时机按下 Ctrl−S键,崩溃后,会从最后一次保存的情况继续开始打字。

Asuna_acmer 938

HDU 3853 LOOPS [简单概率DP]

Akemi Homura is a Mahou Shoujo (Puella Magi/Magical Girl). —— 给出一个矩阵,每个点每一步有P0的概率在原点,P1的概率向右走,P2的概率向左走,问从左上角走到右下角的期望步数。

Asuna_acmer 766

HDU 4336 Card Collector [概率DP]

In your childhood, do you crazy for collecting the beautiful cards in the snacks? ——每天你吃一包零食,零食中可能会出现一张要收集的卡片,卡片共N张,第I张出现的概率为Pi,ΣPi<=1,保证一包零食中最多只有一张卡片(可能没有),问收集完所有卡片的期望天数。

Asuna_acmer 739

POJ 2096 Collecting Bugs [概率DP]

Ivan is fond of collecting. —— 给出N,S,表示bug有N类,被包含在S个子系统中,现在来debug,每一天你会发现一个bug,等概率的属于其中一类,以及其中一个子系统,问在所有类和子系统中至少发现一个bug的期望天数。

Asuna_acmer 726

HDU 4035 Maze [概率DP]

When wake up, lxhgww find himself in a huge maze. —— 给出一个迷宫,路径为一棵树,树上有N个节点,从1出发,每走到一个节点可能会发生三种事件: Ki的概率发生被杀回到起点1; Ei的概率发生成功逃出迷宫; 剩下的概率发生随机选择一条路径到下一个节点。(等概率选择) 问逃出迷宫前需要走的步数的期望值。

Asuna_acmer 684
上一篇: POJ 2096 Collecting Bugs [概率DP]
下一篇: HDU 4336 Card Collector [概率DP]
GrassTreeFlower
博客等级 码龄11年 14粉丝 116原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值