序號連續,,體現在樹上一點關係都沒有。。所以這一條性質用不上就只能暴力了
所以就需要考慮序號連續有什麼用。
首先所求的是乙個區間所以就可以用字首和化成兩個點←重要套路
然後求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 考慮把乙個樹分成輕鏈與重鏈,...