給出乙個n≤3
e5
n\leq3e5
n≤3e
5的樹,然後給你n≤3
e5
n\leq3e5
n≤3e
5個目的地,每次途徑過新的地方都要消耗1
11能量,求問最後每個位置至少要多少能量。把每次走的過程都看成一條樹鏈,除了中間連線的結點多算了一次,可以留到最後處理。
剩下來的操作就是對一條鏈+1+1
+1,由於只有最後才有查詢,可以樹上差分代替樹剖。
#includeusing namespace std;
typedef long long ll;
const int inf=0x3f3f3f3f;
const ll inf=long_long_max;
const int n=3e5+7;
vectorg[n];
int a[n];
int fa[n][21];
int dep[n];
int cnt[n];
void dfs(int u,int f,int d)
} return fa[x][0];
}void dfs2(int u,int f)
} int main()
dfs(1,0,1);
for(int i=1;idfs2(1,0);
cnt[a[1]]++;
for(int i=1;i<=n;i++)
for(int i=1;i<=n;i++)
printf("%d\n",cnt[i]);
return 0;
}
松鼠的新家 樹上差分
松鼠的新家是一棵樹,前幾天剛剛裝修了新家,新家有n個房間,並且有n 1根樹枝連線,每個房間都可以相互到達,且倆個房間之間的路線都是唯一的。天哪,他居然真的住在 樹 上。松鼠想邀請小熊維尼前來參觀,並且還指定乙份參觀指南,他希望維尼能夠按照他的指南順序,先去a1,再去a2,最後到an,去參觀新家。可是...
洛谷P3258松鼠的新家
松鼠的新家是一棵樹,前幾天剛剛裝修了新家,新家有n個房間,並且有n 1根樹枝連線,每個房間都可以相互到達,且倆個房間之間的路線都是唯一的。天哪,他居然真的住在 樹 上。松鼠想邀請小熊維尼前來參觀,並且還指定乙份參觀指南,他希望維尼能夠按照他的指南順序,先去a1,再去a2,最後到an,去參觀新家。可是...
洛谷P3258松鼠的新家
題目傳送門 恩,很明顯的乙個樹剖題,配合樹上差分其實也並不難,不過無奈蒟蒻樹剖還沒那麼熟練,而且樹上差分也做的少,所以這題愣是做了一中午。唉,果然我還是太菜了。恩,具體做法在 中解釋吧 it is made by holselee on 6th jan 2018 include include in...