2017 9 28 lca 失敗總結

2021-08-08 20:26:21 字數 973 閱讀 8223

序號連續,,體現在樹上一點關係都沒有。。所以這一條性質用不上就只能暴力了

所以就需要考慮序號連續有什麼用。

首先所求的是乙個區間所以就可以用字首和化成兩個點←重要套路

然後求lca往上的距離就可以每個點往上+1,查詢目標點往上的點裡有幾個一、 ←相當於離散差分

然後就可以把兩端的位置都散進字首和裡

然後掃一遍就可以了、、

碼:#include#include#define p 201314

using namespace std;

#include#define zuo o<<1,l,mid

#define you o<<1|1,mid+1,r

#define ll long long

#define n 100005

int d[n],fu[n],sz[n],hson[n],top[n],dui[n],n,m,tot,a,b,op,fa;

ll c,ans[n],he[n*2],jbj[n*2];

vectorv[n],q[n],qq1[n],q2[n],qq2[n];

void dfs1(int o,int fa,int dis) }

void jia(int o,int l,int r)

else

return;

}down(o,l,r);

int mid=(l+r)>>1;

if(a<=mid)jia(zuo);

if(b>mid)jia(you);

up(o);

}void work1(int o) }

ll work2(int o)

return c;

}int main()

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

dfs1(1,0,1);

dfs2(1,1);

for(i=1;i<=n;i++)

{work1(i);

for(j=0;j

LCA題目總結

好像lca的題目並不多,現在就做了10道左右,但是找不到別的了,在此做個小總結,將來有更好的題目會不斷更新 解決lca問題,一般用3種方法 1.樸素方法 兩個點都一直沿路徑往上走,直到有某乙個節點被經過兩次並且是第一次出現這樣的點,那麼這個就是lca 此方法最好理解,但是用得不多,但不代表沒作用,有...

培訓失敗總結

1.培訓內容總結 該培訓的主要內容是側重於物件導向思想,如何通過物件導向思想去設計系統。物件導向思想,根據需求分析,把握最主要的業務,分析業務獲取業務物件,然後按照設計原則進行封裝操作和屬性 2.貴公司的系統架構 為什麼這樣架構有哪些優點,又有那些缺點 採用spring vmc tern 該公司自主...

總結 LCA的4種求法

lca的求法有多重多樣,總結下來是下面這4種.希望大家可以加油 我們考慮dfs求出每乙個點的父親 在當前根下 然後直接先暴力跳到同乙個深度,再同時跳 void dfs int u,int f int lca int u,int v int lca int a,int b 考慮把乙個樹分成輕鏈與重鏈,...