HDU 4035 Maze [概率DP]

聊一聊固态电池和钠离子电池新技术 总之,固态电池是一种“安全又高效的未来电池”,它的好处非常明显,但目前还处于研发阶段,离普及还有一段距离。未来,这两种技术可能会与锂离子电池并存,分别满足不同的市场需求。我尝试用最通俗易懂的语言将复杂的技术讲给大家听。钠离子电池和锂离子电池的工作原理很相似,但它用的是。固态电池和钠离子电池是两种正在研发和推广的。,它们有潜力解决现有锂离子电池的部分缺点。,而不是锂(Li)。 阅读详情

Description

When wake up, lxhgww find himself in a huge maze. 

The maze consisted by N rooms and tunnels connecting these rooms. Each pair of rooms is connected by one and only one path. Initially, lxhgww is in room 1. Each room has a dangerous trap. When lxhgww step into a room, he has a possibility to be killed and restart from room 1. Every room also has a hidden exit. Each time lxhgww comes to a room, he has chance to find the exit and escape from this maze. 

Unfortunately, lxhgww has no idea about the structure of the whole maze. Therefore, he just chooses a tunnel randomly each time. When he is in a room, he has the same possibility to choose any tunnel connecting that room (including the tunnel he used to come to that room). 
What is the expect number of tunnels he go through before he find the exit? 

题意:

给出一个迷宫,路径为一棵树,树上有N个节点,从1出发,每走到一个节点可能会发生三种事件:

Ki的概率发生被杀回到起点1;

Ei的概率发生成功逃出迷宫;

剩下的概率发生随机选择一条路径到下一个节点。(等概率选择)

问逃出迷宫前需要走的步数的期望值。


范围:

N<=10000,30组样例


解法:

范围很明显表示时间复杂度为On或者On*logn,考虑概率DP,DP[I]表示从I点出发,需要走的步数的期望值,目标是求解DP[1]。

那么很明显这个转移过程是由环的,需要设未知数,首先列出转移方程:

DP[I]=Ki*DP[1]+(1-Ki-Ei)/M *(ΣDP[son] +DP[father])+1-Ki-Ei

发现应该自底向上DP,所以对于I来说DP[SON]是已知的,其他都是未知的,所以方程转换为:

DP[I]=A[i]*DP[i] + B[i]*DP[father] + C[i]

根据原方程得出A,B,C的转移方程:

设P=(1-k[I]-E[I])/ M ,M为连出去的边数,即P为走其中一条边的概率

A[I]=K[I]+P*ΣA[son];

B[I]=P

C[I]=1-K[I]-E[I]+P*ΣC[son]

最后得到等式DP[1]=A[1]*DP[1]+C[1]

化简得:

DP[1]=C[1]/(1.0-A[1])

可知A[1]→1.0时,无解


代码:

#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;


#define NN 10010
double dp[NN];
double a[NN],b[NN],c[NN],k[NN],e[NN];
int ptx[NN],lnum,n;
struct edge{
    int v,next;
    edge(){}
    edge(int v,int next):v(v),next(next){}
}ed[NN*2];
void addline(int x,int y){
    ed[lnum]=edge(y,ptx[x]);
    ptx[x]=lnum++;
}
void init(){
    lnum=0;
    rep(i,0,n)dp[i]=a[i]=b[i]=c[i]=0;
    rep(i,0,n)ptx[i]=-1;
}

void dfs(int x,int fa){
    double ta,tb,tc;
    ta=tb=tc=0;
    int m=(x==1?0:1);
    gson(i,x){
        int y=ed[i].v;
        if(y==fa)continue;
        dfs(y,x);
        m++;
        ta+=a[y];
        tb+=b[y];
        tc+=c[y];
    }
    double p=(1.0-k[x]-e[x])/double(m);
    if(x==1){
        a[x]=k[x]+ta*p+tb*p;
        c[x]=1.0-k[x]-e[x]+tc*p;
        return;
    }
    if(m==1){
        a[x]=k[x];
        b[x]=p;
        c[x]=1.0-k[x]-e[x];
    }
    if(m!=1){
        a[x]=k[x]+ta*p;
        b[x]=p;
        c[x]=1.0-k[x]-e[x]+tc*p;
    }
    a[x]/=(1.0-tb*p);
    b[x]/=(1.0-tb*p);
    c[x]/=(1.0-tb*p);
}

int main(){
    tdata{
        scanff(n);
        init();
        rep(i,1,n-1){
            int x,y;
            scanff(x);scanff(y);
            addline(x,y);
            addline(y,x);
        }
        rep(i,1,n){
            scanff(k[i]);scanff(e[i]);
            k[i]/=100.0;e[i]/=100.0;
        }
        dfs(1,0);
        double ans=c[1]/(1.0-a[1]);
        double eps=1e-9;
        printf("Case %d: ",cas);
        if(fabs(a[1]-1.0)<eps)printf("impossible\n");
        else printf("%lf\n",ans);
    }
}










Cadence Allegro安装全攻略:从准备到优化的完整指南 本文提供了一份详尽的Cadence Allegro安装教程,涵盖从系统准备、硬件要求到获取安装文件的完整前期工作。指南逐步解析了自定义安装、路径选择及核心组件配置,并重点阐述了许可证服务器的环境变量设置与服务启动等关键激活步骤,最后给出了首次启动验证、个性化优化及常见问题排错方案,助您高效完成安装与配置。 阅读详情

相关推荐

五段式S型算法笔记

又因为有 v-v0= 0.5jt通式: 所以有 vm-v0= 0.5jtm 所以有4vm-4v0= 2jtm。算法1: v=2vm-v0-0.5*jt+2jt*tm-2jtm*tm。加加速度j 自己设置 已知,vmax自己设置已知;所以有4vm-4v0= 2jtm带入算法1。

qq_36658033的博客 681

hdu 5001 从任意点出发任意走d步不经过某点概率

http://acm.hdu.edu.cn/showproblem.php?pid=5001 给定n个点m条边的无向图问从任意点出发任意走d步,从不经过某个点的概率 本想先算路过每个点的概率然后用1减去这个概率 但是由于可以重复路过 所以无法判断是不是第一次经过这个点 所以我们应该直接做不路过的概率 即类似bfs的一步步走 如果走到了要计算的点就停下来 意思...

weixin_30273763的博客 164

Flutter 完整学习文档 - 从入门到精通

Widget 就像乐高积木,Flutter 中所有的东西都是 Widget。一个按钮是 Widget,一段文字是 Widget,甚至布局、边距、对齐方式也是 Widget!"万物皆 Widget"

zwjapple的专栏 2316

Maze (HDU-4035)概率DP

When wake up, lxhgww find himself in a huge maze. The maze consisted by N rooms and tunnels connecting these rooms. Each pair of rooms is connected by one and only one path. Initially, lxhgww is in ro...

菜鸡的博客 312

ICCV 2025 | 哈工大、清华等提出首个双曲学习框架:HLFormer,革新局部相关视频检索

离原点越远,代表的语义越具体(部分)。现有方法大多在传统的欧几里得空间中对视频和文本进行建模,但这往往会导致对视频内在层次结构的错误表示,从而影响检索的准确性。通过UMAP对学习到的帧嵌入进行可视化(如下图),可以观察到,来自同一时刻的视频帧在嵌入空间中聚集在一起,清晰地展示了模型对时序关系的捕捉能力。下图的双曲空间可视化进一步证实了模型的层次建模能力:离原点越近的点,代表的语义层级越高、粒度越粗糙,反之亦然。:既然文本查询描述的是视频的一部分,那么在几何表示上,文本的嵌入向量应该从属于视频的嵌入向量。

我爱计算机视觉 1079

国产Flash替代方案:手把手教你用XSCT烧写ZYNQ7045的BOOT.BIN(附完整命令解析)

本文详细介绍了国产Flash替代方案在ZYNQ7045上的应用,通过XSCT工具链实现BOOT.BIN的精准烧写。内容涵盖国产Flash兼容性检查、PetaLinux环境搭建、XSCT烧写全流程及故障排查,帮助开发者高效完成国产化替代,提升硬件开发效率。

weixin_33670786的博客 425

hdu 4035 Maze 概率dp

Maze Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65768/65768 K (Java/Others) Total Submission(s): 1678    Accepted Submission(s): 639 Special Judge Problem Description When wake

smz436487的专栏 518

深度学习论文: AnomalyDINO: Boosting Patch-based Few-shot Anomaly Detection with DINOv2

通过将DINOv2模型适应到一次性和少量异常检测中,并专注于工业应用少量异常检测。实验表明,这种方法不仅与现有技术相匹敌,甚至可以在许多设置中超越它们。我们提出的仅视觉方法AnomalyDINO基于补丁相似性,能够实现图像级别的异常预测和像素级别的异常分割。该方法在方法论上很简单,无需训练,因此不需要任何额外的数据进行微调或元学习。

mingo_敏 1904

【HDU4035】【Maze】【概率dp】【数列求和】

Maze Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65768/65768 K (Java/Others) Total Submission(s): 2058    Accepted Submission(s): 828 Special Judge Problem Description When wake

ACM之路 396

Agentic RL: 大模型后训练 SFT、PPO和GRPO

本文介绍了从LLM训练到Agentic RL的发展过程。传统LLM训练包括预训练和后训练两个阶段,其中后训练通过监督微调、奖励建模和强化学习等技术优化模型表现。针对智能体在复杂任务中的不足,提出了Agentic RL新范式,将LLM嵌入强化学习框架,通过多步交互、工具使用和环境反馈来优化长期目标。相比传统单轮对话优化(PBRFT),Agentic RL具有状态包含历史上下文、行动类型多样、动态状态转移等特点,更适合解决需要多步推理和规划的任务。这种新方法为开发更强大的智能体系统提供了可能。

Cachel Wood的博客 698

WiFi偏门协议(四):增强的传输机制802.11aa

区分Unicast和Multicast的优先级,以及设定不同的重传次数,以细化EDCA机制。 SCS(StreamClassification Service) 如上图,在VI,VO内各自又增加了一个queue, 对应不同的MAC header。VI和VO内的两个queue可以分别对应UC和MC。这样就提供了同一个AC内的更细粒度的优先级区分。当然还可以使用Drop Eligibility Indication子域来区分不同的重传次数。 改善Multicast数据传...

reekyli的专栏 1790

[HDU4035] Maze(概率DP)

HDU4035 有\(n\)个房间 , 由\(n-1\)条隧道连通起来 , 实际上就形成了一棵树 , 从结点\(1\)出发 , 开始走 , 在每个结点\(i\)都有\(3\)种可能 : \(1.\)被杀死 , 回到结点\(1\)处 (概率为\(k_i\)) \(2.\)找到出口 , 走出迷宫 (概率为\(e_i\)) \(3.\)和该点相连有\(m\)条边 , 随机走一条 求走出迷宫所要走的边数的...

weixin_30725315的博客 136

YOLO26升级:CVPR2026 WDAM小波方向注意力+C2PSA,频域高频引导低频暗区复原,小目标检测精度跃升!

将 WDAM 引入 YOLO 的 C2PSA 模块,核心优势在于用极低的计算开销,为模型装上了一个“结构感知”的增强器,尤其适合处理密集小目标与边缘部署场景。

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 370

HDU - 4035 Maze(概率dp)

题目链接:点击查看 题目大意:给出一个 n 个点的树,初始时位于点 1 ,每个点都会给出一个概率 k[ i ] 和一个概率 e[ i] ,其代表的意义分别是: k[ i ] :在点 i 有 k[ i ] 的几率死亡,复活到点 1 e[ i ] :在点 i 有 e[ i ] 的几率逃生 1 - k[ i ] - e[ i ] :等概率经过周围的边到达相邻的点 问从点 1 开始逃生的期望步数 题目分析: 树形dp维护一下概率dp所需要的变量即可,记得特判无解的情况,有个小坑就是会卡精度,e.

Falcon的博客 747

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

HDU 4035 Maze (概率DP)

题目; LINK 题意:     有n个房间,由n-1条隧道连通起来,实际上就形成了一棵树,     从结点1出发,开始走,在每个结点i都有3种可能:         1.被杀死,回到结点1处(概率为ki)         2.找到出口,走出迷宫 (概率为ei)         3.和该点相连有m条边,随机走一条 (概率1 - ki - ei)     求:走出迷宫所要走的边数的期望

Napoleon 918

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

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

hdu 4035 Maze (树上的概率dp)

Maze Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65768/65768 K (Java/Others) Total Submission(s): 1672    Accepted Submission(s): 635 Special Judge Problem Description When

To be what you what to be! 1189

HDU 4035 Maze(概率dp)

这个

Hardbird 595

hdu4035 Maze(概率dp)

hdu4035题目一颗树形的迷宫,对于每个房间,有几率被杀回到房间1,有几率逃出去,有几率随机到相邻的房间,问逃出去的概率。思路http://www.cnblogs.com/kuangbin/archive/2012/10/03/2711108.html 推公式的概率dp,精妙之处在于E[i] = ki*E[1] + ei*0 + (1-ki-ei)/m*( E[father[i]]+1 + ∑(

天道酬勤 477

HDU 4035 Maze——概率dp

题意: 有n个房间,由n-1条隧道连通起来,实际上就形成了一棵树,  从结点1出发,开始走,在每个结点i都有3种可能: 1.被杀死,回到结点1处(概率为ki) 2.找到出口,走出迷宫 (概率为ei) 3.和该点相连有m条边,随机走一条 求:走出迷宫所要走的边数的期望值。 思路: 设 E[i]表示在结点i处,要走出迷宫所要走的边数的期望。E[1]即为所求。 叶子结点: E[i] = ki*E[1] ...

hao_zong_yin的博客 404

HDU 4035 Maze (很好的概率DP)

做了有些概率和期望的题目了,现在觉得大致有那么两种办法。【说白了还是要靠数学 一、直接利用组合计数求解。 二、通过状态转移列出方程来,如果能递推就直接DP,不能的话,通过对式子处理,找出式子之间的关系和结构上的特点,通过待定系数来进行迭代,最后求出结果。 。。。再有的话就是用容斥啊状压啊什么的【估计自己也不一定想得到 言归正传来说题吧,我把自己的思路写在注释里了。 参考题解:点击

Neutralzz的博客 360

HDU4035 Maze (概率DP)

转:https://www.cnblogs.com/kuangbin/archive/2012/10/03/2711108.html 题意: 有n个房间,由n-1条隧道连通起来,实际上就形成了一棵树, 从结点1出发,开始走,在每个结点i都有3种可能: 1.被杀死,回到结点1处(概率为ki) 2.找到出口,走出迷宫 (概率为ei) 3.和该点...

weixin_30337251的博客 149

HDU 4035 Maze(树形概率DP)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4035 题意:一棵树,从结点1出发,在每个结点 i 都有3种可能:(1)回到结点1 , 概率 Ki;(2)结束,概率 Ei;(3)随机走一条边。(Ki+Ei+随机走=1) 求到结束需要走的边数的期望。 思路:设Q[i]表示从i到结束的期望,设Q[i]=A[i]*Q[1]+B[i]*Q[fa[i]]+...

weixin_33721344的博客 144

【HDU4035】【Maze】【概率dp】

Maze Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65768/65768 K (Java/Others) Total Submission(s): 2059    Accepted Submission(s): 829 Special Judge Problem Description When wake

ACM之路 455

HDU 4035 Maze (概率DP)

/* lxhgww被困在迷宫里,迷宫是一棵n顶点的树,lxhgww初始在点1。每个点三种可能 1.被杀,回到起点1(概率为k[i]) 2.逃脱,即逃出迷宫(概率为e[i]) 3.随机的走一条与改点相连的边(包括它与它父亲相连的那条边 求逃出迷宫期望的步数。 设E[i]表示在结点i时期望的步数, fi表示点i的父亲, m表示点i的度数,j表示i的子节点 当i为叶子

Interstellar_的博客 438

HDU 4035 Maze (概率dp)

Maze Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65768/65768 K (Java/Others) Total Submission(s): 1917    Accepted Submission(s): 748 Special Judge Problem Description When wake up,

左眼皮跳跳 623

HDU 4035 Maze 概率dp

Maze Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65768/65768 K (Java/Others) Total Submission(s): 1858    Accepted Submission(s): 730 Special Judge Problem Description When wake up,

Aosaki 514

HDU 4035 Maze (概率DP & 期望)

Maze Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65768/65768 K (Java/Others)Total Submission(s): 1055    Accepted Submission(s): 347Special Judge Problem Description When wake up, lxhgw...

weixin_34249678的博客 98
上一篇: HDU 4089 Activation [有环的概率DP]
下一篇: HDU 3853 LOOPS [简单概率DP]
GrassTreeFlower
博客等级 码龄11年 14粉丝 116原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值