3251 樹上三角形

2021-08-02 04:37:43 字數 685 閱讀 8143

題目鏈結

題目大意:給定一大小為n的有點權樹,每次詢問一對點(u,v),問是否能在u到v的簡單路徑上取三個點權,以這三個權值為邊長構成乙個三角形。同時還支援單點修改。

題解:看到題目果斷開始想資料結構,感覺要上lct?蒟蒻表示不會……膜了一發題解後。考慮這樣乙個問題:有乙個數列,數列中的數滿足題目條件,那麼最優就是斐波那契數列,在2^31次方中斐波那契數列只有不到50項……路徑長度大於50直接輸出,小於就暴力排序搞一下,最壞o(q*50*log50)

我的收穫:猜測答案增長速度(例如指數型)

#include 

#include

#include

#include

using

namespace

std;

const

int m=100005;

int n,q,t;

int head[m],dep[m],fa[m],w[m],st[105];

struct edgee[m*4];

void add(int u,int v)

void dfs(int x)} 

bool check(int x,int y)

void work()} 

void init()

int main()

bzoj3251 樹上三角形

給定一大小為n的有點權樹,每次詢問一對點 u,v 問是否能在u到v的簡單路徑上取三個點權,以這三個權值為邊長構成乙個三角形。同時還支援單點修改。第一行兩個整數n q表示樹的點數和運算元 第二行n個整數表示n個點的點權 以下n 1行,每行2個整數a b,表示a是b的父親 以1為根的情況下 以下q行,每...

bzoj3251 樹上三角形

題意 有根樹,支援兩種操作,詢問從u v的簡單路徑上是否存在三個點權可以構成三角形,單點修改點權。暑假多校的時候就見過這個斐波那契性質。兩邊之和大於第三邊,顯然這是個很套路的東西,這個性質就是斐波那契性質,而斐波那契數列至多在五十項左右的時候炸int,故若簡單路徑長度大於50,那麼必然有解,否則暴力...

bzoj3251 樹上三角形

傳送門 題目 給定一大小為n的有點權樹,每次詢問一對點 u,v 問是否能在u到v的簡單路徑上取三個點權,以這三個權值為邊 長構成乙個三角形。同時還支援單點修改。input 第一行兩個整數n q表示樹的點數和運算元 第二行n個整數表示n個點的點權 以下n 1行,每行2個整數a b,表示a是b的父親 以...