BZOJ 1316 樹上的詢問 樹分治

2021-07-25 18:52:15 字數 652 閱讀 4466

按理來說是乙個非常簡單的樹分治,我只是為了將專題的時候作為一道引入題目的,不過,我擦set和map的常數差別有那麼大嗎,map居然比set慢了10倍,然後就一直t啊一直t最後看他們都用的set改過來就a了,我也是鬱悶。

方法很簡單,用set記錄乙個長度有沒有出現過,然後每次樹分治統計

#include#include#include#include#include#define maxn 30010  

#define maxm 1000020

using namespace std;

int head[maxn],tot,dis[maxn],n,m,q[maxn],f[maxn],s[maxn],size,rt,vis[maxn],ans[maxn];

struct edgee[maxn*2];

void adde(int a,int b,int c)

setmap;

void getrt(int u,int fa)

f[u]=max(f[u],size-f[u]);

if(f[u]0||q[i]==0)

puts("yes");else puts("no");

return 0;

}

BZOJ1316 樹上的詢問

給出一棵n個點的帶邊權有根樹 有q個詢問,每個詢問輸入len,判斷在樹上是否存在長度為len的路徑 直接點分治,用set儲存鏈的長度就行了 include include include include include include define maxn 11000 define inf 1 3...

BZOJ 1316 樹上的詢問 點分治

time limit 10 sec memory limit 162 mb submit 691 solved 187 submit status discuss 一棵n個點的帶權有根樹,有p個詢問,每次詢問樹中是否存在一條長度為len的路徑,如果是,輸出yes否輸出no.第一行兩個整數n,p分別表...

BZOJ1316 樹上的詢問 點分治

一棵n個點的帶權有根樹,有p個詢問,每次詢問樹中是否存在一條長度為len的路徑,如果是,輸出yes否輸出no.第一行兩個整數n,p分別表示點的個數和詢問的個數 接下來n 1行每行三個數x,y,c,表示有一條樹邊x y,長度為c 接下來p行每行乙個數len,表示詢問樹中是否存在一條長度為len的路徑 ...