令\(p_i=\dfrac \)
設\(f(x)\)表示在第\(k\)步到達合法狀態的概率的生成函式,因為只關心第一次到達合法狀態的情況,所以設\(g(x)\)表示走\(k\)步後回到原來的狀態的概率,\(h(x)\)表示第\(k\)步第一次走到合法狀態的概率,則有\(f(x)=g(x)h(x) \to h(x)=\dfrac\) .設\(h(x)=\sum a_k x^k\),則我們要求就是
\[\sum ka_k=h'(1)=\dfrac
\]考慮如何求\(f(x)\).到達合法狀態的條件為選擇開關\(i\)的次數與\(s_i\)相等.則有
\[f_i(x)=\dfrac+(-1)^e^}2
\]發現\(f(x)\)是ogf,\(f_i(x)\)為egf,為了相互轉化,將\(\prod f_i(x)\)表示為\(\sum c_k(e^x)^k\)的形式,其中\(c_k\)可以用揹包在\(o(n\sum p)\)的時間求得,最後得到
\[\begin
f(x)&=\sum_k ([x^k]k!\sum_i c_i(e^x)^i)x^k \\
&=\sum_k(k!\sum_i c_i [x^k](e^x)^i)x^k \\
&=\sum_k(k!\sum_ic_i\dfrac)x^k \\
&=\sum_k (\sum_i c_ii^k)x^k \\
&=\sum_ic_i\sum_i^kx^k \\
&=\sum_i\dfrac
\end
\]\(g(x)\)的處理類似,最後得到
\[g(x)=\sum_i\dfrac
\]但是發現當\(i=1\)時會有\(1-x\)這一項,所以不能直接將\(x=1\)帶入,考慮分子分母同乘\((1-x)\),得到新的\(f(x),g(x)\)
\[f(x)=\sum_i\dfrac=c_1+\sum_\dfrac
\]所以此時\(f(1)=c_1\)
\[f'(x)=\sum_\dfrac \\
f'(1)=\sum_\dfrac=\sum_\dfrac
\]\(g(1),g'(1)\)也類似計算,即可得到答案.
#include #include #include #define debug(...) fprintf(stderr,__va_args__)
#define inver(a) power(a,mod-2)
using namespace std;
inline char gc()
templatevoid rd(t &x)
while(ch>='0'&&ch<='9')
x*=f;
}typedef long long ll;
const int mod=998244353,r2=(mod+1)>>1;
const int maxn=100+5,maxp=1e5+50;
int n,p,s[maxn],p[maxn];
int c[2][maxp],d[2][maxp];
inline int sub(int x)
ll power(ll x,ll y)
return re;
}inline int sqr(int x)
inline void upd(int *a,int *b,int v,int w)
}int main()
int an=0,c1=c[cur][p<<1],d1=d[cur][p<<1],t=inver(p);
for(int i=-p;i
an=(ll)an*sqr(inver(d1))%mod;
printf("%d\n",an);
return 0;
}
洛谷 P5280 ZJOI2019 線段樹
考慮一次修改中,每個節點的狀態 sooke的圖 dfs中經過的點 白 dfs的終點 黑 白色的點的非黑白兒子 橙 黑節點子樹中的點 灰 橙節點子樹中的點 黃 設 f i,u 表示第 i 次修改後 u 節點在多少個線段樹中的tag 1 首先對於所有點,在沒有被修改的線段樹中tag資訊不會變化,接下來只...
洛谷 P2607 ZJOI2008 騎士
給出一幅有n個點,n條邊的無向未必聯通圖,每乙個點有乙個權並與另外乙個點相連,對其中一些點進行染色,且相鄰兩點的顏色不能都染,則最大的染色點權值和是多少.這題和 洛谷p1453城市環路 很像,區別就在於它不是連通圖.因而可以先用並查集和vector進行分塊,易證每一塊都是比樹多一條邊的連通圖,每一塊...
洛谷P2610 ZJOI2012 旅遊
到了難得的暑假,為了慶祝小白在數學考試中取得的優異成績,小藍決定帶小白出去旅遊 經過一番抉擇,兩人決定將t國作為他們的目的地。t國的國土可以用乙個凸n邊形來表示,n個頂點表示n個入境 出境口。t國包含n 2個城市,每個城市都是頂點均為n邊形頂點的三角形 換而言之,b 城市組成了關於t國的乙個三角剖分...