APIO2018 Duathlon 鐵人兩項

2021-08-27 02:56:05 字數 1113 閱讀 3542

給出一張無向圖,問有多少組點a,b,c滿足存在至少一條從a經過b到c的簡單路徑。

首先考慮列舉點a,c,這樣每一組a,c對答案的貢獻就是可能在ac路徑之間出現的點的個數,然後我們可以對圖建圓方樹,使圓點的點權為-1(去重),方點的點權為點雙的大小,這樣ac路徑之間出現的點的個數就是a,c兩點在圓方樹上的路徑的點權和,然後用樹形dp統計每個點對答案的貢獻即可。

注意,圖不一定連通。

#include

#include

#include

#include

#define ll long long

#define n 500100

using

namespace std;

ll n,m,yn,first[n]

,bb=

1,dfn[n]

,low[n]

,tt,sta[n]

,top,bj[n]

,num[n]

,ans,size[n]

,tmp;

bool use[n]

;struct bn

bn[n]

;vectorson[n]

,st;

inline

void

add(ll u,ll v)

void

dfs(ll now)

t=bn[

(sta[top]

<<1)

+1].to;

if(bj[t]

!=n)

if(sta[top]

==q)

break;}

top--;}

}}}ll dfs

(ll now,ll last)

p+=(size[tmp]

-res)

*res;

ans+

=p*num[now]

;return res;

}int

main()

for(i=

1;i<=yn;i++)}

for(tmp=

0;tmpsize()

;tmp++

) cout<}

2018APIO 進京趕考

先見識了一下ctsc的操作。漲了見識。打鐵匠x1 見識了個全英文的ppt,各種講課其實真的講的很好,只是邏輯性太強反而讓完全不會的同學有些尷尬。linux真的令人窒息。guide用不起就算了,控制台除錯。報錯直接密密麻麻打5頁螢幕看都看不懂。編譯都編譯不起我還玩個啥?我就聽懂了凱老師的講課,彈幕令人...

遊記 APIO2018遊記

update 雞排真好吃,明年有機會再來北京van明天就要去北京浪了,於是在模擬apio2015前嘗試去做了hash,很愉快地wa了,就開始了模擬apio2015的比賽。a題亂搞,c題亂搞,b題結果暴力都沒寫出來。感覺這為後面暴力沒搞出來暴力打好了堅實的基礎 hdhd過金牌線。總體還是很愉快的,每個...

APIO2018 鐵人兩項

題意 在乙個無向圖裡面選三個點 s c f 需要能夠從 s 出發,經過 c 到達 f 點,中間不能提前經過 f 且需要是乙個簡單路徑 solution 簡單路徑當然就是園方樹了,想想怎麼統計答案 yy一下可以發現,有一條路徑 s f 中間能選的點就是路徑上的圓點和 因為在乙個點雙連通分量裡面,一定有...