CF148D Bag of mice


題目傳送門


思路

狀態設計

d p i , j dp_{i, j} dpi,j? 表示袋中有 i i i 個白鼠和 j j j 個黑鼠時, A A A 能贏的概率。

狀態轉移

現在考慮抓鼠情況:

  1. A A A 抓到白鼠:直接判 A A A 贏,概率是 i i + j \frac{i}{i + j} i+ji?
  2. A , B A,B A,B 都抓到一只黑鼠,并且跑出來一只黑鼠:概率為 j i + j × j ? 1 i + j ? 1 × j ? 2 i + j ? 2 \frac{j}{i + j} \times \frac{j - 1}{i + j - 1} \times \frac{j - 2}{i + j - 2} i+jj?×i+j?1j?1?×i+j?2j?2?,然后轉移到 d p i , j ? 3 dp_{i, j - 3} dpi,j?3?,故此情況下 A A A 獲勝的概率為 j i + j × j ? 1 i + j ? 1 × j ? 2 i + j ? 2 × d p i , j ? 3 \frac{j}{i + j} \times \frac{j - 1}{i + j - 1} \times \frac{j - 2}{i + j - 2} \times dp_{i, j - 3} i+jj?×i+j?1j?1?×i+j?2j?2?×dpi,j?3?
  3. A , B A,B A,B 都抓到一只黑鼠,并且跑出來一只白鼠:概率為 j i + j × j ? 1 i + j ? 1 × i i + j ? 2 \frac{j}{i + j} \times \frac{j - 1}{i + j - 1} \times \frac{i}{i + j - 2} i+jj?×i+j?1j?1?×i+j?2i?,然后轉移到 d p i ? 1 , j ? 2 dp_{i - 1, j - 2} dpi?1,j?2?,故此情況下 A A A 獲勝的概率為 j i + j × j ? 1 i + j ? 1 × i i + j ? 2 × d p i ? 1 , j ? 2 \frac{j}{i + j} \times \frac{j - 1}{i + j - 1} \times \frac{i}{i + j - 2} \times dp_{i - 1, j - 2} i+jj?×i+j?1j?1?×i+j?2i?×dpi?1,j?2?
  4. B B B 抓到白鼠:此情況 A A A 失敗,故不考慮。

所以總得轉移方程就是:
d p i , j = i i + j + j i + j × j ? 1 i + j ? 1 × j ? 2 i + j ? 2 × d p i , j ? 3 + j i + j × j ? 1 i + j ? 1 × i i + j ? 2 × d p i ? 1 , j ? 2 dp_{i, j} = \frac{i}{i + j} + \frac{j}{i + j} \times \frac{j - 1}{i + j - 1} \times \frac{j - 2}{i + j - 2} \times dp_{i, j - 3} + \frac{j}{i + j} \times \frac{j - 1}{i + j - 1} \times \frac{i}{i + j - 2} \times dp_{i - 1, j - 2} dpi,j?=i+ji?+i+jj?×i+j?1j?1?×i+j?2j?2?×dpi,j?3?+i+jj?×i+j?1j?1?×i+j?2i?×dpi?1,j?2?
當然轉移的時候得分別判斷【 j j j 是否大于等于 3 3 3】和【 i i i 是否大于等于 1 1 1 j j j 是否大于等于 2 2 2】。

邊界條件

  1. 在沒有老鼠或全是黑鼠的情況下, A A A 一定輸,即: ? i ∈ [ 0 , m ] , d p 0 , i = 0 \forall i \in [0, m], \ dp_{0, i} = 0 ?i[0,m],?dp0,i?=0
  2. 在只有白鼠的情況下, A A A 一定贏,即: ? i ∈ [ 1 , n ] , d p i , 0 = 1 \forall i \in [1, n], \ dp_{i, 0} = 1 ?i[1,n],?dpi,0?=1

復雜度

  • 時間復雜度: O ( n × m ) O(n \times m) O(n×m)
  • 空間復雜度: O ( n × m ) O(n \times m) O(n×m)

代碼

#include <bits/stdc++.h>using namespace std;typedef long long ll;const int maxn = 1e3 + 7;int n, m;
double dp[maxn][maxn];
int main() {scanf("%d%d", &n, &m);for (int i = 0; i <= m; ++i) dp[0][i] = 0;  // 沒有老鼠或只有黑鼠, B 贏 for (int i = 1; i <= n; ++i) dp[i][0] = 1;  // 只有白鼠, A 贏for (int i = 1; i <= n; ++i) {for (int j = 1; j <= m; ++j) {dp[i][j] += 1.0 * i / (i + j);if (j >= 3) {dp[i][j] += 1.0 * j / (i + j) * 1.0 * (j - 1) / (i + j - 1) *1.0 * (j - 2) / (i + j - 2) * dp[i][j - 3];}if (i >= 1 && j >= 2) {dp[i][j] += 1.0 * j / (i + j) * 1.0 * (j - 1) / (i + j - 1) * 1.0 * i / (i + j - 2) * dp[i - 1][j - 2];}}}printf("%.9lf\n", dp[n][m]);return 0;
} 

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

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

相關文章

BT1120 BT656驅動相關代碼示例

前些年做視頻輸出項目的時候用過bt1120 tx與rx模塊&#xff0c;現將部分代碼進行記錄整理。代碼功能正常&#xff0c;可正常應用。 1. rx部分&#xff1a; /****************************************************************************** Copyright (C) 2021,All rights …

服務器簡介(含硬件外觀接口介紹)

服務器&#xff08;Server&#xff09;是指提供資源、服務、數據或應用程序的計算機系統或設備。它通常比普通的個人計算機更強大、更可靠&#xff0c;能夠長時間無間斷運行&#xff0c;支持多個用戶或客戶端的請求。簡單來說&#xff0c;服務器就是專門用來存儲、管理和提供數…

SQL-exists和in核心區別?、 性能對比?、適用場景?

EXISTS和IN的基本區別。IN用于檢查某個值是否在子查詢返回的結果集中,而EXISTS用于檢查子 查詢是否至少返回了一行數據。通常來說,EXISTS在子查詢結果集較大時表現更好,因為一旦找 到匹配項就會停止搜索,而IN則需要遍歷整個結果集。 在 SQL 中,EXISTS 和 IN 都可以用于…

煥活身心,解鎖健康養生新方式

健康養生是一門科學&#xff0c;更是一種生活智慧。從日常點滴做起&#xff0c;才能筑牢健康根基。? 飲食上&#xff0c;應遵循 “食物多樣&#xff0c;谷類為主” 原則。多攝入新鮮蔬果&#xff0c;它們富含維生素與膳食纖維&#xff0c;有助于增強免疫力&#xff1b;選擇全…

QT+Cmake+mingw32-make編譯64位的zlib-1.3.1源碼成功過程

由于開源的軟件zlib庫是很多相關庫libpng等基礎庫&#xff0c;因此掌握使用mingw編譯器來編譯zlib源碼的步驟十分重要。本文主要是通過圖文模式講解完整的qtcmakezlib源碼搭建和測試過程&#xff0c;為后續的其他源碼編譯環境搭建做基礎準備。 詳細步驟如下&#xff1a; 1、下…

健身會員管理系統(ssh+jsp+mysql8.x)含運行文檔

健身會員管理系統(sshjspmysql8.x) 對健身房的健身器材、會員、教練、辦卡、會員健身情況進行管理&#xff0c;可根據會員號或器材進行搜索&#xff0c;查看會員健身情況或器材使用情況。

【langchain4j】Springboot如何接入大模型以及實戰開發-AI問答助手(一)

langchain4j介紹 官網地址&#xff1a;https://docs.langchain4j.dev/get-started langchain4j可以說是java和spring的關系&#xff0c;spring讓我們開發java應用非常簡單&#xff0c;那么langchain4j對應的就是java開發ai的 “Spring” 他集成了AI應用的多種場景&#xff0c…

平均池化(Average Pooling)

1. 定義與作用?? ??平均池化??是一種下采樣操作&#xff0c;通過對輸入區域的數值取??平均值??來壓縮數據空間維度。其核心作用包括&#xff1a; ??降低計算量??&#xff1a;減少特征圖尺寸&#xff0c;提升模型效率。??保留整體特征??&#xff1a;平滑局部…

【dify實戰】chatflow結合deepseek實現基于自然語言的數據庫問答、Echarts可視化展示、Excel報表下載

dify結合deepseek實現基于自然語言的數據庫問答、Echarts可視化展示、Excel報表下載 觀看視頻&#xff0c;您將學會 在dify下如何快速的構建一個chatflow&#xff0c;來完成數據分析工作&#xff1b;如何在AI的回復中展示可視化的圖表&#xff1b;如何在AI 的回復中加入Excel報…

加一:從簡單問題到復雜邊界的深度思考

加一&#xff1a;從簡單問題到復雜邊界的深度思考 引言 在算法世界里&#xff0c;有些問題看似簡單&#xff0c;實則暗藏玄機&#xff0c;其中“加一”問題就是一個典型例子。所謂“加一”&#xff0c;通常指的是給一個由數字組成的數組表示的整數加一&#xff0c;這聽起來簡…

PointCore——利用局部全局特征的高效無監督點云異常檢測器論文與算法解讀

概述 三維點云異常檢測旨在從訓練集中檢測出異常數據點&#xff0c;是工業檢測、自動駕駛等眾多應用的基礎。然而&#xff0c;現有的點云異常檢測方法通常采用多個特征存儲庫來充分保留局部和全局特征表示&#xff0c;這帶來了高昂的計算成本以及特征之間的不匹配問題。為解決…

桌面應用UI開發方案

一、基于 Web 技術的跨平臺方案 Electron Python/Go 特點&#xff1a; 技術棧&#xff1a;前端使用 HTML/CSS/JS&#xff0c;后端通過 Node.js 集成 Python/Go 模塊或服務。 跨平臺&#xff1a;支持 Windows、macOS、Linux 桌面端&#xff0c;適合開發桌面應用。 生態成熟&…

redis 配置日志和數據存儲位置

Redis配置日志和數據存儲位置 介紹 Redis是一個開源的高性能鍵值存儲數據庫&#xff0c;常用于緩存、消息隊列和實時分析等場景。在使用Redis時&#xff0c;我們需要配置日志和數據存儲位置&#xff0c;以便更好地管理和監控Redis的運行狀態。本文將介紹如何配置Redis的日志和數…

OSI七層網絡模型詳解

OSI七層網絡模型詳解 OSI&#xff08;開放系統互連&#xff09;模型是國際標準化組織&#xff08;ISO&#xff09;提出的網絡通信框架&#xff0c;旨在規范不同系統間的通信。它分為七層&#xff0c;每層承擔特定功能&#xff0c;協同實現端到端的數據傳輸。 1. 物理層&#x…

Springboot 學習 之 logback-spring.xml 日志打印

文章目錄 1. property2. springProperty3. appender4. logger4.1. 通過包路徑控制日志4.2. 通過類名控制日志4.3. 按自定義 Logger 名稱控制日志 5. root6. springProfile SpringBoot 項目中可以通過自定義 logback-spring.xml 中各項配置&#xff0c;實現日志的打印控制 1. p…

Gradle與Idea整合

文章目錄 1. Groovy 簡介2. Groovy 安裝[非必須]3. 在idea中創建java工程 1. Groovy 簡介 在某種程度上&#xff0c;Groovy可以被視為Java的一種腳本化改良版,Groovy也是運行在JVM上&#xff0c;它可以很好地與Java代碼及其相關庫進行交互操作。它是一種成熟的面向對象編程語言…

OpenFeign終極指南:超時控制、重試策略、攔截器與自定義Starter

目錄 前言 使用 引入依賴 開啟feign 編寫feign客戶端 效果 日志 超時配置 重試機制 攔截器 Fallback兜底返回 引入依賴 編寫兜底實現 連接池 引入依賴 開啟連接池 制作OpenFeign Starter 編寫配置類 自動裝配 前言 在RPC框架中&#xff0c;有openFeign和Du…

Windows桌面圖標變白的解決方案

一、問題原因 桌面圖標變白通常是由于系統圖標緩存文件&#xff08;IconCache.db&#xff09;損壞或系統圖表示現異常導致。圖標緩存是Windows用于存儲應用程序和文件夾圖標圖像的臨時文件&#xff0c;當該文件損壞或系統未正確更新緩存時&#xff0c;圖標會因無法加載原始圖像…

【mysql】Mac 通過 brew 安裝 mysql 、啟動以及密碼設置

Mac 通過 brew 安裝 mysql 、啟動以及密碼設置 使用 brew 安裝 mysqlmysql 啟動mysql密碼設置參考文章&#xff1a; 使用 brew 安裝 mysql brew install mysqlmysql 啟動 下載完畢&#xff0c;終端告訴我們mysql數據庫沒有設置密碼的&#xff0c;我們可以直接執行 mysql -u r…

Manus AI:突破多語言手寫識別技術壁壘之路

Manus AI與多語言手寫識別 討論Manus AI如何突破多語言手寫識別的技術壁壘。 寫一篇詳細的博客有重點有鏈接超詳細 Manus AI&#xff1a;突破多語言手寫識別技術壁壘之路 在人工智能領域&#xff0c;多語言手寫識別一直是極具挑戰性的難題。不同語言的字符形態、書寫規則大相…