【DP_概率DP专辑】【10、4最新更新】

本文作者分享了自己在大学期间提升概率DP能力的过程,通过分析Codeforces 148D、Sgu 495、Zoj 3383、Zoj 3460、Hdu 4405等题目,详细阐述了概率DP的解题思路和状态转移方程,涉及概率计算和期望值的求解。通过实例解析,帮助读者理解概率DP在不同问题中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    进入大学之后发现自己对概率问题很不感冒,其实一直都是这样,高中就没好好读数学。概率不好的结果就是对概率类dp掌握得just so so,因为对这类dp的状态和转移不敏感,要么是yy,要么是花很长时间想状态想转移。

    现在痛下决心,好好虐待自己一段时间,做下概率dp。


    Codeforces 148D Bag of mice  

   状态转移方程比较难想,开虚拟比赛的时候花了50分钟硬是没AC.设win[i][j]表示公主赢的概率,lost[i][j]表示龙输的概率,然后根据题意进行转移。状态转移方程如下:

    win[i][j] = i * 1.0 / (i + j);                                                            //i只白老鼠j只黑老鼠时公主选白老鼠            
    win[i][j] += lost[i][j-1] * j * 1.0 / (i + j);                                       //i只白老鼠j只黑老鼠时公主选黑老鼠,但公主选完黑老鼠后龙还是输了      
    lost[i][j]  = j * 1.0 / (i + j) * win[i-1][j-1] * (i * 1.0 / (i + j - 1));    //i只白老鼠j只黑老鼠时龙选黑老鼠,选完后跳出去只白老鼠    
    lost[i][j] += j * 1.0 / (i + j) * win[i][j-2] * ((j - 1) * 1.0 / (i + j - 1));  //i只白老鼠j只黑老鼠时龙选黑老鼠,选完后跳出去只黑老鼠    

     

     Sgu 495 Kids and Prizes  

    比较简单的概率DP。m个人选n个礼物,问选中的期望。因为每个人选择礼物是独立,那么猜想求解过程n只是用来求概率。设dp[i]表示第i个人选中礼物的概率,np[i]表示第i个人不选中礼物的概率。那么dp[i] = dp[i-1] * np[i-1] + dp[i-1] * (dp[i-1]-1.0/n),表示:如果上一个人没选中,那么本次选中的概率和上次选中的概率一样是dp[i-1],如果上次已经选中,那么本次选中的概率是dp[i-1]-1.0/n。而np[i] = 1- dp[i];这种方法复杂度是O(m),其实O(1)就可以了。从反方向求不被选中的期望,那么答案就是n-n*((n-1)/n)^m,每个礼物不被m个人选中的概率是((n-1)/n)^m,因为每个礼物都一样,所以直接乘n就Ok。


     Zoj 3383 Patchouli's Spell

### DP_C3 和 YOLO 实现细节及其在计算机视觉项目中的应用 #### 1. DP_C3 模块概述 DP_C3 是一种改进的卷积神经网络结构,源自 Res2Net 的多尺度特征提取能力。该模块通过引入多个并行分支来增强特征表示的学习效果[^3]。 ```python class C3(nn.Module): def __init__(self, c1, c2, n=1, shortcut=True, g=1, e=0.5): super(C3, self).__init__() c_ = int(c2 * e) # hidden channels self.cv1 = Conv(c1, c_, 1, 1) self.cv2 = Conv(c1, c_, 1, 1) self.cv3 = Conv(2 * c_, c2, 1) # act=FReLU(c2) self.m = nn.Sequential(*[Bottleneck(c_, c_, shortcut, g, e=1.0) for _ in range(n)]) def forward(self, x): return self.cv3(torch.cat((self.m(self.cv1(x)), self.cv2(x)), dim=1)) ``` 此代码展示了如何构建一个基本的 C3 卷积块,在实际应用中可以根据具体需求调整参数设置。 #### 2. YOLO 输出层解析 YOLO 网络最后一层输出的是一个多维张量,其形状通常为 `S×S×(B*5+C)`,其中 S 表示网格大小(如7),B 表示每个网格预测边界框的数量,而 C 则代表类别数目。对于每一个单元格而言,都会生成 B 组 (x,y,w,h,confidence),再加上 C 类别的概率分布[^1]。 #### 3. 错误处理机制 当运行基于 GPU 加速版本的 NMS(non-maximum suppression)算法时可能会遇到如下错误:“`RuntimeError: nms_impl: implementation for device cuda:0 not found.`”。这通常是由于 CUDA 版本不兼容或其他环境配置问题引起的。建议检查 PyTorch 安装包是否支持当前使用的硬件平台,并确保所有依赖项均已正确安装[^2]。 #### 4. 数据预处理流程 为了适应不同的计算资源条件,某些嵌入式设备可能需要特定的数据转换过程。例如,在 K210 平台上执行人脸检测任务时,摄像头捕获到的画面最初是以 RGB565 编码存储;然而,KPU 芯片内部运算则要求输入图像采用 RGB888 格式。因此,在调用 kpu.run_yolo2 函数之前必须先完成相应的像素格式变换操作[^4]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值