1906 樹上的螞蟻

2021-07-25 13:30:16 字數 1876 閱讀 8624

time limit: 25 sec  

memory limit: 162 mb

submit: 80  

solved: 15 [

submit][

status][

discuss]

1 2 1

2 3 1

31 3 2

3 1 1

1 2 3

2n< = 100000

play with tree by amber [

submit][

status][

discuss]

本來想複習路徑求交的。。結果就這麼wa飛了= =

怎麼求交的話。。在3700的題解有,,,就不再說了

網上的題解都不說怎麼判斷相遇啊。。。。。自己寫的時候情況沒考慮清楚。。。。。

如果路徑交是乙個點,判斷到達時間是否相等即可

如果是一條路徑,分兩類討論

1.兩隻螞蟻在路徑上同向走

如果同時到達起點,或是後抵達的螞蟻比先抵達的螞蟻先離開,都會相遇

2.反向走

分別列舉乙隻螞蟻到達起點的時間,看這個時間是否在另乙隻螞蟻爬的總路程的時間段內,如果在,肯定相遇。。因為另乙隻螞蟻會跑過來= =

尤拉序優化lca就不說了= =

#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;

const int maxn = 2e5 + 20;

const int n = 18;

typedef long long ll;

struct e

e(int to,int w): to(to),w(w){}

};int n,m,dfs_clock,t,ans,l[maxn][n],ans[maxn][n],bin[maxn],len[maxn]

,s[maxn],t[maxn],v[maxn],lca[maxn],dfn[maxn],a[5],dis[maxn];

bool ok[1010][1010];

vector g[maxn];

bool cmp(const int &x,const int &y)

int getint()

void clear()

}void dfs(int x,int fa)

}int lca(int x,int y)

int dis(const int &x,const int &y)

void pre_work()

m = getint();

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

void work(const int &x,const int &y,const int &i,const int &j)

else

}else }

bool judge(int x,int i)

int main()

{ #ifdef dmc

freopen("dmc.txt","r",stdin);

#endif

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

{ bin[i] = (1<

螞蟻的故事

老婆生活記錄 螞蟻是地球上最常見的昆蟲,數量最多的昆蟲種類。螞蟻好小,只有幾公釐,乙隻螞蟻的重量只有 0.005 克,很多動畫片裡都有它的身影,百威啤酒的廣告也讓小小螞蟻變成了最可愛的小東西,對這樣的乙個小可愛,你會怕它嗎?今天,閒暇之餘對幾個朋友做了乙個小小的調查,問他們是否怕螞蟻?片刻,朋友們的...

墜落的螞蟻

一根長度為1公尺的木棒上有若干只螞蟻在爬動。它們的速度為每秒一厘公尺或靜止不動,方向只有兩種,向左或者向右。如果兩隻螞蟻碰頭,則它們立即交換速度並繼續爬動。三隻螞蟻碰頭,則兩邊的螞蟻交換速度,中間的螞蟻仍然靜止。如果它們爬到了木棒的邊緣 0或100厘公尺處 則會從木棒上墜落下去。在某一時刻螞蟻的位置...

螞蟻的故事

每天,小螞蟻很早來上工,並且一來就開始做事。她的生產力很高,並且工作愉快。身為老闆的獅子,非常驚奇螞蟻能自行工作而不須監督。他認為在沒有監督下的螞蟻生產力是如此的好,如果有人監督的話她的生產力應該會更好才對 因此他招募了有豐富經驗的蟑螂作為監督員,蟑螂以擅長撰寫優良報告而聞名。蟑螂的第乙個決定是設立...