虛數 BZOJ3572 HNOI2014 世界樹

2021-09-14 06:53:12 字數 2305 閱讀 6973

給出一顆樹,每次選中m個點,對於樹上任意乙個點,會被其最近的乙個選中點包含(相同有編號小優先),求每個選中點包含了多少個點。

之前寫過兩次都沒寫部落格。。

結果複習板題的時候,連題意都不知道。。。

方法就是虛數板子

#include

#include

#include

#include

#define sf scanf

#define pf printf

#define maxn 300010

#define inf 0x3fffffff

using

namespace std;

typedef pair<

int,

int> pii;

int dfn[maxn]

,ncnt,q;

int dep[maxn]

,siz[maxn]

,ans[maxn]

,flag[maxn]

;int fa[maxn][20

];vector<

int> a[maxn]

,son[maxn]

;void

dfs(

int x,

int f=0)

}int

find_child

(int x,

int u)

pii near[maxn]

;void

get_near

(int x)

}void

get_near

(int x,pii upd)

}void

calc

(int x)

int tp=u;

int q=near[u]

.first;

int p=near[x]

.first;

int totlen=p+q+dep[u]

-dep[x]

;for

(int i=

19;i>=

0;i--)if

(totlen%2==

0&&ax(dep[u]

-dep[fa[tp][0

]]+q)*

2<=totlen)

tp=fa[tp][0

];ans[ax]+=

(siz[tp]

-siz[u]);

ans[bx]+=

(siz[sonc]

-siz[tp]);

} ans[near[x]

.second]

+=siz1;

}void

solve

(int rt)

bool

sort_by_dfn

(int x,

int y)

intlca

(int u,

int v)

return fa[u][0

];}int n,u,v,q,tot,rt;

int b[maxn]

,id[maxn]

,st[maxn]

,tp;

void

print

(int x)

intmain()

dfs(1)

;sf("%d"

,&q)

;for

(int i=

1;i<=q;i++

)sort

(b+1

,b+1

+tot,sort_by_dfn)

; tp=0;

st[++tp]

=b[1];

son[b[1]

].clear()

;for

(int j=

2;j<=tot;j++)

son[st[tp]].

push_back

(rt);}

st[++tp]

=b[j]

; son[b[j]].

clear()

;}while

(tp)

for(

int j=

1;j<=tot;j++

) ans[id[j]]=

0;solve

(rt)

;// print(rt);

for(

int j=

1;j<=tot;j++)pf

("%d "

,ans[id[j]])

;pf("\n");

}}

bzoj3575 Hnoi2014 道路堵塞

一開始看錯題啦!某一條邊不走的最短路相當於1 沿最短路 x y 沿最短路 n,於是 定義t,表示從起點到最短路上序號r有一條長度為l的非最短路。然後用堆維護即可。慎用memset。tle。include include include include include define n 100005 ...

bzoj3575 Hnoi2014 道路堵塞

總趕腳第二題總是比第三題難。好吧,這題一點思路都沒有 聽說用民科可以過掉大部分資料。我們發現刪邊後的路徑一定是這樣的 起點 若干個原最短路徑上的邊 若干個非最短路徑上的邊 若干個原最短路徑上的邊 終點 我們發現其實就是不走原最短路徑上的乙個區間,並且刪除的邊一定在這個區間上 我們按順序列舉邊,然後從...

bzoj3575 Hnoi2014 道路堵塞

題目鏈結 給出乙個有向圖和一條最短路,問最短路上任意一條邊斷掉,此時的最短路是多少。聽說這道題正解被江哥插了。右轉題解 lmy學長 平衡樹用堆就可以了。用棧來存要加入堆中的點,不然不好消除標記。bzoj3575 include include include include include incl...