GDOI JZOJ4794 富爺說是一棵樹

2021-07-23 03:28:09 字數 1255 閱讀 3622

富爺說來一棵樹,於是大頭栽了一棵樹。樹大了,有n個點和n - 1條邊,任意兩個點都是聯通的,點的標號為1 - n。愛樹的大頭和富爺在樹上安居樂業,但大頭住在u,而富爺住在v,他們都很不高興,因為u到v有且只有一條簡單路徑。

當然了,樹王富爺找到了解決辦法,他打算帶著大頭再給樹建一條邊(保證不是自環),而且他們會在n * (n - 1) / 2的方案中隨機選擇一種。

但,要讓富爺和大頭開心是有條件的。只有新建邊之後,富爺去大頭家以及大頭去富爺家存在兩條路徑不會走相同的邊時,他們才會呵呵(也就是說 存在乙個簡單環包含u和v)。

不開心的事情選擇忘記。當富爺和大頭開心時,你能得到愉快值等於環的大小。所以,你要告訴富爺和大頭,當他們開心時(只考慮在環內),他們的期望愉悅值。

20% n,m <= 2000

40% n,m <= 10^5 樹是隨機的

60% n,m <= 10^5 每個點的度數均為2

100% n,m <= 10^5

#include

#include

#include

#include

#include

#define ll long long

using namespace std;

const int maxn=200005;

int first[maxn],last[maxn],next[maxn],f[maxn][20];

ll n,m,i,t,j,k,l,x,y,num,v[maxn],fa[maxn];

ll size[maxn],g[maxn],p[maxn],deep[maxn];

bool bz[maxn];

double len,ans;

void lian(int

x,int

y)int lca(int

x,int

y)int main()

}while (j) size[fa[v[j]]]+=size[v[j]],f[v[j]][0]=fa[v[j]],g[fa[v[j]]]+=g[v[j]]+size[v[j]],j--;

for (i=2;i<=n;i++)

for (j=1;j<=log(n)/log(2);j++)

for (i=1;i<=n;i++)

f[i][j]=f[f[i][j-1]][j-1];

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

printf("%.8lf\n",ans);

}}

4 7考試總結

太久沒做dp題了,一首涼涼 有一天,小王同學正走在路上,忽然天上掉下大把大把的餡餅 哈哈哈。這個只能說小王同學的人品太好,這餡餅就掉落在他身旁的10公尺範圍內。所以小王同學馬上去接餡餅,因為掉在地方的餡餅就不能吃了。他只能在這個10公尺範圍內接餡餅。由於小王同學是乙個非常優秀的oier,但他不是乙個...

4 7物件導向

class school def init self,school name,school address self.school name school name self.school address school address def school info self def classro...

每日總結47

使用外連線 left outer join 左外連線 左連線 結果集幾包括連線表的匹配行,也包括左連線表的所有行。right outer join 右外連線 右連線 結果集既包括連線表的匹配連線行,也包括右連線表的所有行。full cross outer join 全外連線 不僅包括符號連線表的匹配...