当前位置: 首页 > news >正文

dedecms本地可以更换网站模板出现网站模板不存在3800给做网站

dedecms本地可以更换网站模板出现网站模板不存在,3800给做网站,装修公司免费装修,京津冀协同发展存在的突出问题【LetMeFly】837.新 21 点:动态规划滑动窗口 力扣题目链接:https://leetcode.cn/problems/new-21-game/ 爱丽丝参与一个大致基于纸牌游戏 “21点” 规则的游戏,描述如下: 爱丽丝以 0 分开始,并在她的得分少于 k 分时…

【LetMeFly】837.新 21 点:动态规划+滑动窗口

力扣题目链接:https://leetcode.cn/problems/new-21-game/

爱丽丝参与一个大致基于纸牌游戏 “21点” 规则的游戏,描述如下:

爱丽丝以 0 分开始,并在她的得分少于 k 分时抽取数字。 抽取时,她从 [1, maxPts] 的范围中随机获得一个整数作为分数进行累计,其中 maxPts 是一个整数。 每次抽取都是独立的,其结果具有相同的概率。

当爱丽丝获得 k或更多分 时,她就停止抽取数字。

爱丽丝的分数不超过 n 的概率是多少?

与实际答案误差不超过 10-5 的答案将被视为正确答案。

 

示例 1:

输入:n = 10, k = 1, maxPts = 10
输出:1.00000
解释:爱丽丝得到一张牌,然后停止。

示例 2:

输入:n = 6, k = 1, maxPts = 10
输出:0.60000
解释:爱丽丝得到一张牌,然后停止。 在 10 种可能性中的 6 种情况下,她的得分不超过 6 分。

示例 3:

输入:n = 21, k = 17, maxPts = 10
输出:0.73278

 

提示:

  • 0 <= k <= n <= 104
  • 1 <= maxPts <= 104

解题方法:动态规划

这道题有点“反向dp”。令dp[i]dp[i]dp[i]表示当爱丽丝获得iii分时,最终获胜的概率。

其中“获胜”是指最终分数≥k\geq kk≤n\leq nn,那么初始状态0分时dp[0]dp[0]dp[0]即位所求。

一旦爱丽丝分数≥k\geq kk她就立即停止抽牌,由于最后一张牌的分数范围是111maxPtsmaxPtsmaxPts,所以最终分数的可能范围是从kkkk+maxPts−1k+maxPts-1k+maxPts1,可得dp数组的初始状态:

dp[i]={1if i≤n0else ,k≤i<k+maxPtsdp[i]=\begin{cases} 1 \text{ if } i\leq n \\ 0 \text{ else } \end{cases}\ \ \ ,\ k\leq i\lt k+maxPts dp[i]={1 if in0 else    , ki<k+maxPts

那么在她手中的分数还未达到游戏终止时(假设当前为iii分),由于再抽一张牌可以等概率达到i+1,i+2,⋯,i+maxPtsi+1, i+2, \cdots, i+maxPtsi+1,i+2,,i+maxPts,所以可得状态转移方程:

dp[i]=dp[i+1]+dp[i+2]+⋯+dp[i+maxPts]maxPtsdp[i] = \frac{dp[i+1]+dp[i+2]+\dots+dp[i+maxPts]}{maxPts}dp[i]=maxPtsdp[i+1]+dp[i+2]++dp[i+maxPts]

由于每次计算dp[i+1]+dp[i+2]+⋯+dp[i+maxPts]dp[i+1]+dp[i+2]+\dots+dp[i+maxPts]dp[i+1]+dp[i+2]++dp[i+maxPts]太过于机械和重复,所以可以参考“滑动窗口”的思想,使用一个变量sss记录“窗口”中maxPtsmaxPtsmaxPts个元素的和,并随着窗口的前移不断更新sss即可。

  • 时间复杂度O(k+maxPts)O(k+maxPts)O(k+maxPts)
  • 空间复杂度O(k+maxPts)O(k+maxPts)O(k+maxPts)

AC代码

C++
/** @Author: LetMeFly* @Date: 2025-08-17 19:33:11* @LastEditors: LetMeFly.xyz* @LastEditTime: 2025-08-17 19:38:09*/
class Solution {
public:double new21Game(int n, int k, int maxPts) {vector<double> dp(k + maxPts);double s = 0;for (int i = k; i < k + maxPts; i++) {dp[i] = i <= n;s += dp[i];}for (int i = k - 1; i >= 0; i--) {dp[i] = s / maxPts;s = s - dp[i + maxPts] + dp[i];}return dp[0];}
};
Python
'''
Author: LetMeFly
Date: 2025-08-17 19:33:11
LastEditors: LetMeFly.xyz
LastEditTime: 2025-08-17 19:40:07
'''
class Solution:def new21Game(self, n: int, k: int, maxPts: int) -> float:dp = [0.] * (k + maxPts)s = 0.for i in range(k, k + maxPts):dp[i] = 1. if i <= n else 0.s += dp[i]for i in range(k - 1, -1, -1):dp[i] = s / maxPtss = s + dp[i] - dp[i + maxPts]return dp[0]
Java
/** @Author: LetMeFly* @Date: 2025-08-17 19:33:11* @LastEditors: LetMeFly.xyz* @LastEditTime: 2025-08-17 19:43:15*/
class Solution {public double new21Game(int n, int k, int maxPts) {double[] dp = new double[k + maxPts];double s = 0;for (int i = k; i < k + maxPts; i++) {dp[i] = i <= n ? 1. : 0.;s += dp[i];}for (int i = k - 1; i >= 0; i--) {dp[i] = s / maxPts;s = s + dp[i] - dp[i + maxPts];}return dp[0];}
}
Go
/** @Author: LetMeFly* @Date: 2025-08-17 19:33:11* @LastEditors: LetMeFly.xyz* @LastEditTime: 2025-08-17 22:20:30*/
package mainfunc new21Game(n int, k int, maxPts int) float64 {dp := make([]float64, k + maxPts)s := 0.for i := k; i < k + maxPts; i++ {if i <= n {dp[i] = 1.} else {dp[i] = 0.}s += dp[i]  // 别忘了}for i := k - 1; i >= 0; i-- {dp[i] = s / float64(maxPts)s = s + dp[i] - dp[i + maxPts]}return dp[0]
}
Rust
/** @Author: LetMeFly* @Date: 2025-08-17 19:33:11* @LastEditors: LetMeFly.xyz* @LastEditTime: 2025-08-17 22:31:00*/
impl Solution {pub fn new21_game(n: i32, k: i32, max_pts: i32) -> f64 {let k: usize = k as usize;let max_pts: usize = max_pts as usize;let n: usize = n as usize;let mut dp: Vec<f64> = vec![0 as f64; k + max_pts];let mut s: f64 = 0.;for i in k..(k+max_pts) {if i <= n {dp[i] = 1.;} else {dp[i] = 0.;}s += dp[i];}for i in (0..k).rev() {dp[i] = s / max_pts as f64;s = s + dp[i] - dp[i + max_pts];}dp[0]}
}

同步发文于CSDN和我的个人博客,原创不易,转载经作者同意后请附上原文链接哦~

千篇源码题解已开源

http://www.dtcms.com/a/597857.html

相关文章:

  • 漯河哪里做网站柳州市住房和城乡建设局网站首页
  • 50m专线做视频网站asp网络公司程序 网站公司企业建设源码 网站设计模板seo优化
  • 企业年底做网站的好处做正品的网站
  • LeetCode 84. 柱状图中最大的矩形(困难)
  • YOLOv2算法详解(下篇):细节打磨与性能突破的终极密码
  • 算法 day 51
  • BI二维数据可视化大屏升级三维可视化大屏:前端开发者下一个内卷赛道
  • 插补算法(逐点比较法)+PWM配置操作
  • 唐山网站制作app新郑市网站建设
  • 买完阿里云域名如何做网站网站商业授权
  • QEMU 使用 Open vSwitch网桥连接虚拟机网络
  • 充气泵方案:充气泵与汽车的关系
  • 北京P2P公司网站建设网站建设合同 模板 下载
  • 贴片机编程:提高生产效率与精度的关键技术 | 贴片机编程技巧与注意事项详解
  • 深度学习_三层神经网络传播案例(L0->L1->L2)
  • 营销类网站建设需要注意的问题国家信用信息公示系统官网山东
  • 第四章:C# 面向对象编程详解:从类与对象到完整项目实践
  • DDoS防护:为企业业务保驾护航的高可用盾牌
  • 企业产品做哪个网站推广好建筑培训课程有哪些
  • 模版 c++
  • LLaMA Factory微调大模型
  • UaGateway构建高可用OPC UA架构:实现冗余通信与数据聚合
  • Linux之vmlinux文件段布局和arm64 的链接脚本vmlinux.lds.S分析
  • C#6、三种主要的错误类型是什么
  • 使用Selenium进行网页自动化
  • 论坛网站建设推广优化wordpress主题下载资源
  • 网站推广文章范例在哪里查企业信息最准确
  • MCP驱动的Rgentic RRG(向量数据库+网络搜索)
  • 网站漏洞怎么修复上海劳务市场招聘信息查询
  • 异常的分类