一行一共 5 個整數 p, a, b, l, r,意義如題。
19解釋:
f[1] = 2/1, f[2] = 2/1, f[3] = 3/1, f[4] = 2/1, f[5] = 7/2, f[6] = 3/1, f[7] = 7/2加起來 = 19。
考慮p=2只求乙個數怎麼做
發現 x 會走到的點只有 log個。
設 dp[i][0/1] 表示 x 的前 i 位 = 0 了,0/1 表示是否有進製,這個數的 f 值。
初值dp[inf][1]=1/(1-a/b)
再套乙個數字dp+整體轉移即可
考慮如何推廣到p>=2
可以發現兩者的dp是一樣的
我們只需要預處理出
p0[x]:最低位 = x,最後到 0 的概率。
p1[x]:最低位 = x,最後進製的概率。
f0[x]:最低位 = x,到 0 或進製前走的期望步數。
#include
#define fo(a,b,c) for (a=b; a<=c; a++)
#define mod 998244353
#define ll long long
using
namespace std;
const
int n=
1e5+77;
ll s,a,b,l,r,ans,s,f[n]
,g[n]
,p1[n]
,p2[n]
;int p,i,j,k,l,tot;
map hs;
map::iterator i;
ll power
(ll x,ll t)
return b;
}ll work
(ll t)
void
work1
(int t,ll k,ll b)
void
work2
(int t,ll k,ll b)
void
work3
(int t,ll k,ll b)
intmain()
fo(i,
1,p-
1) g[i]
=(g[i]
+g[i-1]
)%mod;
printf
("%lld\n",(
(work
(r)-
work
(l-1))
%mod+mod)
%mod)
;}
JZOJ 省選模擬 string
一行乙個整數表示答案。sample input 樣例輸入 3 3sample output 樣例輸出 首先我們忽略重複的字串,定義 n 表示長度為 n 的回文串,或由兩個回文串拼成的字串數量。那麼可以通過列舉第乙個回文串的長度 可以為 0 可以算出f n 但是正如剛才所說,會對如 abaaba 這樣...
JZOJ 省選模擬 Moorio Kart
description 由於目前可供奶牛們使用的約會 並沒有給 farmer john 留下深刻印象,他決定推出乙個基於新匹配演算法的奶牛交友 該演算法可基於公牛和母牛間的共同興趣對公牛和母牛進行匹配。bessie 在尋找情人節 barn dance 的合作夥伴時,決定試用這個 在註冊賬戶之後,fj...
JZOJ 省選模擬 挖寶
description 有乙個挖寶遊戲,它在一棵 n 個點的樹上進行,寶藏埋在某個未知的點 每次挖掘乙個點 u,玩家得到的反饋資訊是乙個數值 d,表示 u 號點到 號點簡單路徑上的邊數。這個遊戲會進行 q 次,每次遊戲藏寶的位置不一定相同。你作為一名優秀的 er,對自己無比自信。你希望用最少的挖掘次...