砍死怪獸的概率

題目描述:給定3個參數,N,M,K,怪獸有N滴血,等著英雄來砍自己,英雄每一次打擊,都會讓怪獸流失[0,M]的血量,流失的值每次在[0,M]上等概率的獲得一個值,求K次打擊之后,英雄把怪獸砍死的概率。

way:概率=砍完K次之后存活(還有血)的掉血方案數/砍K次之后的所有的掉血方案數pow(M+1,K)。如果砍到某刀的時候血量已經掉完了,那么后面怎么砍都是可以砍死的,后面的方案數是pow(M+1, 剩余可砍的次數)。

//怪獸還剩下hp點血
//還有rest刀可以砍
//每次的傷害在[0,M]范圍內
#include<iostream>
#include<vector>
using namespace std;//怪獸還剩下hp點血
//還有rest刀可以砍
//每次的傷害在[0,M]范圍內
long long process(int hp, int rest, int M)
{//如果砍到最后還沒死就是砍不死的方案if(rest==0) return hp<=0?1:0;if(hp<=0) {return pow(M+1,rest);}long long ways=0;for(int blood=0; blood<=M; blood++){ways+=process(hp-blood,rest-1,M);}return ways;
}double killMonsterPosibility(int hp, int M, int K)
{if(hp<1 || M<1 || K<1){return 0;}return (double)process(hp, K, M)/pow(M+1,K);
}

way2:dp版。

double dpWay(int N, int M, int K)
{//N為hpif(N<1 || M<1 || K<1){return 0;}//雖然hp理論上可以小于0,但是在dp中沒有小于0的下標,只是沒有表示,但是是有的,在ways+=pow(M+1,rest)中隱式的計算了.vector<vector<long long>>dp(N+1, vector<long long>(K+1));dp[0][0]=1;for(int rest=1; rest<=K; rest++){dp[0][rest]=pow(M+1,rest);for(int hp=1; hp<=N; hp++){long long ways=0;for(int blood=0; blood<=M; blood++){if(hp-blood>=0){ways+=dp[hp-blood][rest-1];}else{ways+=pow(M+1, rest-1);}}dp[hp][rest]=ways;}}return (double)dp[N][K]/(double)(pow(M+1,K));
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/15437.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/15437.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/15437.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

kafka單機安裝及性能測試

kafka單機安裝及性能測試 Apache Kafka是一個分布式流處理平臺&#xff0c;最初由LinkedIn開發&#xff0c;并于2011年開源&#xff0c;隨后成為Apache項目。Kafka的核心概念包括發布-訂閱消息系統、持久化日志和流處理平臺。它主要用于構建實時數據管道和流處理應用&#xff0…

電商項目之有趣的支付簽名算法

文章目錄 1 問題背景2 思路3 代碼實現 1 問題背景 在發起支付的時候&#xff0c;一般都需要對發送的請求參數進行加密或者簽名&#xff0c;下文簡稱這個過程為“簽名”。行業內比較普遍的簽發算法有&#xff1a; &#xff08;1&#xff09;按支付渠道給定的字段排序進行拼接&am…

C++|設計模式(〇)|設計模式的六大原則

這里文章只做簡要描述&#xff0c;作為掃盲 在軟件開發過程中&#xff0c;遵循一定的設計原則可以幫助開發者創建更加靈活、可維護和可擴展的系統。設計模式的六大原則是面向對象設計的核心理念&#xff0c;本文將詳細介紹這些原則&#xff0c;并結合實例說明它們的重要性和應用…

Android Studio添加依賴 新版 和 舊版 的添加方式(Gradle添加依賴)(Java)

舊版的&#xff08;在線添加&#xff09; 1找 文件 在項目的build.gradle文件中添加依賴(在下面的節點中添加庫 格式 ’ 組 &#xff1a;名字 &#xff1a; 版本號 ‘ ) dependencies {implementation com.example:library:1.0.0 }implementation 組:名字:版本…

【lambdastreammaven】

lambda 匿名函數 為了簡化java中的匿名內部類 事件監聽 寫一個類 實現 ActionListener 接口 (外部類) | | 內部類 類在其他地方用不到, 索性就把這個類定義在類的內部使用 好處: 1.內部可以使用外部類的成員 …

互聯網十萬個為什么之什么是分布式計算?

分布式計算是一種計算方法&#xff0c;它將計算任務分散到多個物理或邏輯上分開的計算機&#xff08;稱為節點&#xff09;上執行&#xff0c;這些節點通過網絡互連并協作完成共同的目標。每個節點具備獨立的處理能力和存儲資源&#xff0c;在分布式系統中&#xff0c;它們共享…

論文閱讀--CLIPasso

讓計算機把真實圖片抽象成簡筆畫&#xff0c;這個任務很有挑戰性&#xff0c;需要模型捕獲最本質的特征 以往的工作是找了素描的數據集&#xff0c;而且抽象程度不夠高&#xff0c;筆畫是固定好的&#xff0c;素描對象的種類不多&#xff0c;使得最后模型的效果十分受限 之所以…

小米財報:業績遠超預期,汽車推著手機跑!

隨著一季度財報陸續出爐&#xff0c;企業間的分化越來越明顯。 新環境下&#xff0c;很多公司都陷入停滯時&#xff0c;去討論“掉隊”已經沒有多少意義&#xff0c;現在真正值得我們關注的&#xff0c;是那些在逆風情況下&#xff0c;還能“領先”的企業。毫無疑問&#xff0…

ES集群性能優化參考建議

Elasticsearch&#xff08;ES&#xff09;集群性能優化是一個多方面的任務&#xff0c;涉及硬件、配置、查詢優化等多個方面。以下是一些建議&#xff0c;幫助你優化Elasticsearch集群的性能&#xff1a; 1. 硬件優化 內存&#xff1a;確保分配給Elasticsearch的內存足夠大&a…

C++|設計模式(三)|抽象工廠模式

抽象工廠模式仍然屬于創建型模式&#xff0c;我們在【簡單工廠和工廠方法模式】這篇文章中&#xff0c;描述了簡單工廠和工廠方法模式&#xff0c;并在文末&#xff0c;簡單介紹了工廠方法模式的局限性。 本文將通過汽車工廠的例子繼續來闡述使用抽象工廠模式相比較于工廠方法…

Linux修煉之路之馮系結構,操作系統

目錄 一&#xff1a;馮諾依曼體系結構 1.五大組件 2.存儲器存在的意義 3.幾個問題 二&#xff1a;操作系統 接下來的日子會順順利利&#xff0c;萬事勝意&#xff0c;生活明朗-----------林辭憂 一&#xff1a;馮諾依曼體系結構 我們當代的計算機的基本構成都是由馮諾依曼…

Kubernetes 容器編排

應用程序部署演變 主要有三個演變&#xff1a; 傳統部署&#xff1a;互聯網早期&#xff0c;會直接將應用程序部署在物理機上 優點&#xff1a;簡單&#xff0c;不需要其它技術的參與 缺點&#xff1a;不能為應用程序定義資源使用邊界&#xff0c;很難合理地分配計算資源&…

【開源】多語言大型語言模型的革新:百億參數模型超越千億參數性能

大型人工智能模型&#xff0c;尤其是那些擁有千億參數的模型&#xff0c;因其出色的商業應用表現而受到市場的青睞。但是&#xff0c;直接通過API使用這些模型可能會帶來數據泄露的風險&#xff0c;尤其是當模型提供商如OpenAI等可能涉及數據隱私問題時。私有部署雖然是一個解決…

PY32F003+RTL8710(AT) 實現獲取天氣情況

一、RTL8710主要AT指令 1、ATSR&#xff1a;模塊重啟 2、ATSE1&#xff1a;開啟回顯 3、ATPW1&#xff1a;station模式 4、ATPNssid,password,,&#xff1a;連接到AP 5、ATPK1&#xff1a;設置自動接收 6、ATPC0,v1.yiketianqi.com,80&#xff1a;與網站建立TCP連接 7、ATPT125…

關于pytorch加載模型報錯問題

load_net[“params”] 報keyerror 加載模型后查看對應參數是什么 model2 torch.load(m1_path "xxx.pth") print(model1.keys())若輸出如下&#xff1a; 已經有相應參數不需要執行 load_net[“params”]若輸出如下 則需要load_net[“params”]

Linux-命令上

at是一次性的任務&#xff0c;crond是循環的定時任務 如果 cron.allow 文件存在&#xff0c;只有在文件中出現其登錄名稱的用戶可以使用 crontab 命令。root 用戶的登錄名必須出現在 cron.allow 文件中&#xff0c;如果這個文件存在的話。系統管理員可以明確的停止一個用戶&am…

3D 生成重建014-Bidiff使用二維和三維先驗的雙向擴散

3D 生成重建014-Bidiff使用二維和三維先驗的雙向擴散 文章目錄 0 論文工作1 論文方法2 效果 0 論文工作 大多數三維生成研究集中在將二維基礎模型向上投影到三維空間中&#xff0c;要么通過最小化二維評分蒸餾采樣&#xff08;SDS&#xff09;損失&#xff0c;要么通過對多視圖…

判斷變量是否為數組的幾種方法

1、isArray 方法 isArray() 方法用于判斷一個對象是否為數組。如果對象是數組返回 true&#xff0c;否則返回 false。 Array.isArray(arr); // true 1 2、對象原型 通過原型鏈判斷是否具有和數組同一原型鏈的頂端。 arr.__proto__ Array.prototype; // true 1 3、instanceof…

[數據結構] -- 雙向循環鏈表

&#x1f308; 個人主頁&#xff1a;白子寰 &#x1f525; 分類專欄&#xff1a;C打怪之路&#xff0c;python從入門到精通&#xff0c;數據結構&#xff0c;C語言&#xff0c;C語言題集&#x1f448; 希望得到您的訂閱和支持~ &#x1f4a1; 堅持創作博文(平均質量分82)&#…

一文理清database/sql包的使用場景和宕機查詢流程

一文理清database/sql包你可能遇到的問題 那么database/sql包實現了什么功能呢&#xff1f;建立數據庫連接檢測連接是否能ping通通過連接進行具體的sql查詢查詢完將連接進行關閉當數據庫宕掉重啟后再次查詢 database/sql包創建的db連接 對于數據庫宕掉后重啟是否仍然有效&#…