1. 程式人生 > >【CodeForces908D】New Year and Arbitrary Arrangement (期望DP)

【CodeForces908D】New Year and Arbitrary Arrangement (期望DP)

題目大意

有一個ab字串,初始為空。
PaPa+Pb的概率在末尾新增字母a,有 PbPa+Pb的概率在末尾新增字母b,當出現≥k個ab子串時立即停止新增字母,求最後期望的ab子串個數。(子串ab不要求連續)
例子:當k=1,aab含2個ab,bbabbab時不可能出現的,因為到了bbab就會停止新增字母。

題解

dp[i][j]表示字首包含i個a,j個ab子串的所有字串,得到的期望ab子串個數。

轉移:
在此字首後添上a:dp[i][j]+=dp[i+1][j]×PaPa+Pb
在此字首後添上b:dp[i][j]+=dp[i][j+i]×PbPa+Pb

初始狀態:dp[i]

[j]=j(jk)
目標狀態:dp[0][0](無字首,代表所有串)
但這兩條↑是錯的

還有一些無窮情況:

1.前綴出現了無窮多個b:bbbbb…….bbbbaababa…
顯然在第一個a之前的所有b都沒有任何用處,為了結束新增字母,則必定會出現a,所以目標狀態一定會出現字首有一個a,沒有ab的情況,所以,目標狀態應定義為dp[1][0]

2.出現了無窮多個a:ababaaaa……..aaaaaab,雖然這樣概率很小,但是把b新增在末尾,會增加一大堆ab,不可忽略,如果使用dp,會使i值增加到無窮大。
所以,將初始狀態定義為dp[i][j](i+jk),然後通過數學計算:

pa

=PaPa+Pbpb=PbPa+PbS=dp[i][j]

S=(i+j)pb+pa(i+j+1)pb+p2a(i+j+2)pb+.......
paS=pa(i+j)pb+p2a(i+j+1)pb+.......
SpaS=(i+j)pb+(pa+p2a+p3a+...)pb
(1pa)S=(i+j)pb+pa(1pa)pb1pa
pbS=(i+j)pb+papbpb
S=i+j+papb
則初始狀態
dp[i][j]=i+j+

相關推薦

CodeForces908DNew Year and Arbitrary Arrangement 期望DP

題目大意 有一個ab字串,初始為空。 用PaPa+Pb的概率在末尾新增字母a,有 PbPa+Pb的概率在末尾新增字母b,當出現≥k個ab子串時立即停止新增字母,求最後期望的ab子串個數。(子串ab不要求連續) 例子:當k=1,aab含2個ab,bbabba

Codeforces 908D New Year and Arbitrary Arrangement概率DP,邊界條件處理

sin color 一個 pan ++ urn fin [1] bsp 題目鏈接 Goodbye 2017 Problem D 題意 一個字符串開始,每次有$\frac{pa}{pa+pb}$的概率在後面加一個a,$\frac{pb}{pa+pb}$的概率在後面加一個

CF908GNew Year and Original Order動態規劃

數字 tps 怎麽 string scanf namespace sum %d ret 【CF908G】New Year and Original Order(動態規劃) 題面 洛谷 CF 題解 設\(f[i][j][k][0/1]\)表示當前填到了第\(i\)位,有\(j

題解 bzoj3036: 綠豆蛙的歸宿 期望dp

www. cpp can bit push oid rom .cn 概率 題面戳我 Solution 反向建圖跑拓撲排序,順便處理\(dp\) 假設某條邊是\(u \rightarrow v (dis)\) ,那麽轉移方程就是\(dp[v]+=(dp[u]+dis)/in

Codeforces 908 D New Year and Arbitrary Arrangement

ble other have span pri res ould com rmi Discription You are given three integers k, pa and pb. You will construct a sequence with the fo

CF 908 D New Year and Arbitrary Arrangement —— 期望DP

std con iostream algo print \n problem 就會 algorithm 題目:http://codeforces.com/contest/908/problem/D 首先,設 f[i][j] 表示有 i 個 a,j 個 ab 組合的期望,A

裴蜀定理CF1091C New Year and the Sphere Transmission

Description 有 \(n\) 個人圍成一個圈,按照順時針從 \(1\) 到 \(n\) 編號。第 \(1\) 個人會拿到一個球,他指定一個數字 \(k\),然後會將球傳給他後面順指標數第 \(k\) 個人。再次傳到 \(1\) 後遊戲結束。定義一次遊戲的 \(ans\) 為所有拿到球的人的編號之和

CF908GNew Year and Original Order

【CF908G】New Year and Original Order 題面 洛谷 題解 設\(f[i][j][k][l]\)表示當前在第\(i\)位有\(j\)位大於等於\(k\),當前有沒有卡上界的方案數 則列舉新加的數\(p\),有 \[ f[i+1][j+(p\geq k)][k][l|(p&

Codeforces 908D New Year and Arbitrary Arrangement

題意: 給定字元’a’出現的概率pa/(pa+pb),’b’出現的概率pb/(pa+pb); 給定一個正整數k,構造一個字串,當出現至少k個子序列”ab”時停止構造; 問子序列”ab”出現次數的期望P/Q,輸出P*(Q的逆元); 注意是子序列不是子串

Leetcode打家劫舍 I and 打家劫舍 II動態規劃PYTHON

198.打家劫舍 題目表述: 你是一個專業的強盜,計劃搶劫沿街的房屋。每間房都藏有一定的現金,阻止你搶劫他們的唯一的制約因素就是相鄰的房屋有保安系統連線,如果兩間相鄰的房屋在同一晚上被闖入,它會自動聯絡警方。 給定一個代表每個房屋的金額的非負整數列表,確定

BZOJ1260 [CQOI2007]塗色paint區間dp

c++ ide hid event pri display pro == spl 題目 傳送門:QWQ 分析 區間dp, 詳見代碼 代碼 /*****************************************

BZOJ3191 [JLOI2013]卡牌遊戲概率dp

如果 style ++ bzoj mem color con size oid 題目 傳送門:QWQ 分析 算是概率dp不錯的題。 $ dp[i][j] $表示有i個人時,這i個人中的第j個獲勝的概率。 我們把i從1推到n,那麽答案就是$ dp[n

題解洛谷P1070 道路遊戲線性DP

次元傳送門:洛谷P1070 思路 一開始以為要用什麼玄學優化 沒想到O3就可以過了 我們只需要設f[i]為到時間i時的最多金幣 需要倒著推回去 即當前值可以從某個點來 那麼狀態轉移方程為: f[i]=max(f[i],f[i-k]+val-cost[now]); now表示從now這個

leetcode931 下降路徑最小和基礎DP

題目: 一個矩陣,從上到下走一遍,只允許走相鄰的列,然後每一個位置有一個權值,求經過路徑的最小權值和。 思路: 基礎DP了,dp[i][j]表示到達位置(i,j)所需要的花費的權值。那麼他可以由三種狀態轉化而來。 (i-1,j-1),(i-1,j),(i-1,j+1)就是上一列與其相

[Codeforces 1042E]Vasya and Magic Matrix期望 DP

Address 洛谷 RemoteJudge Codeforces 1042E Meaning 一個 n

線段樹+Dfs序CF620ENew Year Tree

Description 你有一棵以1為根的有根樹,有n個點,每個節點初始有一個顏色c[i]。 有兩種操作: 1 v c 將以v為根的子樹中所有點顏色更改為c 2 v 查詢以v為根的子樹中的節點有多少種不同的顏色 Input 第一行,兩個整數\(n,m\),分別代表有\(n\)個節

MATLAB norm ( Vector and matrix norms )向量範數以及矩陣範數

norm Vector and matrix norms Syntax n = norm(v) n = norm(v,p) n = norm(X) n = norm(X,p) n = norm(X,'fro') Description n = norm

笨方法學PAT1140 Look-and-say Sequence 20 分

一、題目 Look-and-say sequence is a sequence of integers as the following: D, D1, D111, D113, D11231, D112213111, ... where D is in [0,

Python正則表達式1未完

pes mmu get regular rop 則表達式 line out github 1、正則表達式唯一的用途就是在文本中匹配和尋找模式,模式可以簡單,也可以復雜。 2、Regexr 這個網站很個性的就是,有一個community標簽,打開後可以看到評分由高到低

BZOJ4942[Noi2017]整數 線段樹+DFS卡過

push 正常的 int 描述 printf turn n-1 如果 bzoj 【BZOJ4942】[Noi2017]整數 題目描述去uoj 題解:如果只有加法,那麽直接暴力即可。。。(因為1的數量最多nlogn個) 先考慮加法,比較顯然的做法就是將A二進制分解成lo