分析:\(\sum\limits_(-1)^min=\sum\limits_^na_i\sum\limits_^(-1)^j\binom\)
\(\sum\limits_(-1)^min=\sum\limits_^na_i[n-i=0]\)
\(\sum\limits_(-1)^min=a_n=max\)
設\(f_\)表示\(f\)第一次走到\(s\)狀態的期望步數。
這個東西我們直接列舉\(s\)然後樹上高斯消元即可。
最後再\(fwt\)一下就能得到反演後的\(min_s\)了。
**:
#include #include #include #include #include using namespace std;
#define mod 998244353
typedef long long ll;
#define n 20
#define m ((1<<18)+50)
int n,head[n],to[n<<1],nxt[n<<1],du[n],rt,m;
int s,cnt[m],cnt;
inline void add(int u,int v)
ll k[n],b[n],inv[n],f[m];
ll qp(ll x,ll y)
void dfs(int x,int y)
k[x]=inv[du[x]]; b[x]=1; ll lhs=1;
for(i=head[x];i;i=nxt[i]) if(to[i]!=y)
lhs=qp(lhs,mod-2);
k[x]=k[x]*lhs%mod; b[x]=b[x]*lhs%mod;
}void fwt(ll *a,int len)
fwt(f,(1
printf("%lld\n",(f[s]+mod)%mod);
}}
LOJ 2542 隨機遊走
解 首先minmax容斥變成經過集合t的第乙個點就停止的期望步數。對於某個t,設從x開始的期望步數為f x 如果x t,f x 0。否則f x f y in x 1 樹上高斯消元。從葉子往上,可以發現每個點都可以表示為af fa b 於是我們推一波式子,參考,就可以對每個t,o n 求出f root...
PKUWC2018 隨機遊走
loj 2542.pkuwc 2018 隨機遊走 最值反演 樹上期望dp 其實不是很難啦 min max容斥既視感 設f x 表示從x走到s中第乙個點的期望步數 f x 1 d x f fa x 1 d x f ch x 1 這個有環 利用f x a f fa x b的套路代換 得到a,b的遞推式 ...
PKUWC2018 隨機演算法
題意 給定乙個圖 n 20 定義乙個求最大獨立集的隨機化演算法 產生乙個排列,依次加入,能加入就加入 求得到最大獨立集的概率 本質就是計數題 每個點有三種狀態 考慮過且在獨立集中,考慮過未在獨立集中,未考慮 本來在集合裡的點不能知道有哪些,而且不能加入的點的排列也不好確定。乙個好的方法是 把考慮過的...