2020杭電多校

2022-05-02 04:45:10 字數 2268 閱讀 7098

hdu - 6836

對於一張圖,每個生成樹的權值為所有邊按位與的結果,求生成樹期望權值。

樸素解法:暴力求出每乙個生成樹,累積權值和,然後除生成樹總數。

int型別只有31位,既然是與的結果,對於每一條生成樹所有的邊該位都應該是1,

按位列舉每一位,求出該位為1的生成樹權值大小,將結果累積到答案裡。

#includeusing

namespace

std;

typedef

long

long

ll;const

int n=1e4+500

;const ll mod=998244353

;int a[40][120][120

];ll determinant(

int b[120][120],int

n) res=-res;

break

; }

}if(!flag)

return0;

}for(int j=i+1;j<=n;j ++)

res=-res;}}

res= ((res*b[i][i])%mod+mod)%mod;

}return res%mod;

}ll qpow(ll a, ll b,ll m)

base *= base

;

base %=m;

b >>= 1; //

注意是b>>=1 not b>>1

}

return

ans;

}ll inv(ll x)

intmain()}a[

31][u][u]++;

a[31][v][v]++;

a[31][u][v]--;

a[31][v][u]--;

}ll ans=0

; ll cnt=determinant(a[31],n-1

);

for(int i=0;i<=30;i++)

ans=ans*inv(cnt)%mod;

printf(

"%lld\n

",ans);

}//system("pause");

return0;

}

view code

hdu - 6832 

一張圖,每條邊權值為2的  i  次方,求

因為每條邊的權值為2的  i  的 次方,那麼每兩點的最短路即為生成樹上的距離,那麼直接列舉每一條邊,計算它被算多少次即可。

#includeusing

namespace

std;

typedef

long

long

ll;const

int n=1e5+50

;const ll mod=1e9+7

;int

a[n], fa[n],head[n];

inttot0,tot1,ecnt,n,m;

ll ans;

struct

edgee[

2*n];

void add(int u,int v,int

w)int

cnt0[n],size[n];

void

init()

int find(int x)

//構建:

void build(int x,int y)

ll qpow(ll a, ll b,ll m)

base *= base

;

base %=m;

b >>= 1; //

注意是b>>=1 not b>>1

}

return

ans;

}void dfs_size(int u,int

fa)}

void dfs_ans(int u,int

fa)}

intmain()

for(int i=1;i<=m;i++)

dfs_size(

1,-1

); dfs_ans(

1,-1

); printf(

"%lld\n

",ans);

}//system("pause");

return0;

}

view code

Tetrahedron(2020杭電多校)

題意 給你直角四面體的三邊a,b,c,三者兩兩垂直,問a,b,c從 1,n 隨機挑選,求三者交點到底面的距離的平方的逆元。直角四面體有條結論是1 h2 1 a2 1 b2 1 c2 然而比賽的時候沒想到怎麼算期望,捂臉。演算法 e 1 h2 e 1 a2 e 1 b2 e 1 c2 3 e 1 a2...

2020杭電多校七(Game)

hdu6850 題解 從外層依次刪去最遠的點對,最後刪到只剩餘乙個點的時候判斷該點是否第乙個點,是的話就必敗,否則就必勝,因為如果先手一開始處於最遠點對上的點的時候,那麼每次先手均可在本層走走遠點對距離,那麼後手要想走就必須走更遠的距離,那麼後手就只能向上一層走,但是當後手向上走的時候他一定會位於最...

Fibonacci Sum 2020杭電多校1

一開始想的是用矩陣來求,但發現樣例一直過不去。最後才發現,ab k ne a kb k 其中 a,b 為矩陣,做了怎麼久才發現是乙個假演算法。看來題解才發現用的是斐波那契數列的通項公式 f n frac frac n frac n 同時還要知道 5 是 1e9 9 的二次剩餘 且有 38300801...