題目:
並不會做這個題,題解說是lca(最近公共祖先),並不懂,說一下我自己的思路吧,雖然沒能實現出來。
題意:告訴一張連通圖,沒有環,每條邊長度為1,告訴三個點a,b,c,如果其中乙個點a到另乙個點e的距離小於另外兩個點到e的距離,則a可以佔據e。求a,b,c能夠佔據的城市的數目。
分析:因為會有10^5個提問,因此得在o(1) ~ 小於10^3的迴圈的複雜度內回答出它的提問。所以不可能暴力。
思路:我想求出3個點的兩兩之間的中點或者中間的邊,然後斷開,然後求出a,b,c的連通分量個數。讀入的時候已經把它的子結點全部壓了進去,斷開的時候減掉斷開的那個點或者那條邊帶的子結點。
選中的三個點是1,2,7,原本1的子結點是2,3,4,現在只有3,4,4.size = 1,3.size = 0,所以sum[1] = 3.size + 4.size = 2 ,還得加上本身所以是3。
不足:刪掉之後還得全部遍歷一遍才能得到全部點的子結點數目(隨著點刪掉,子結點數目也會變),時間複雜度還是很大。
hdu 1273不會的題
這題其實我不會,隨便找了幾個特例算算覺得答案可能是 n 1 2就打了交,居然過了。可是不太理解這種做法的正確性,上網搜一下,也沒人寫解題報告,改天問問老師去 hdu1273 win.cpp created on 2012 10 23 author ben include include includ...
一些非常騷(其實是不會)的操作
struct node eg includeusing namespace std int main define ios ios sync with stdio false cin.tie 0 cout.tie 0 lower bound a,a n,b a 從從小到大排好序的陣列a的begin位...
IT(然而其實是。。hdu5244?
time limit 3000 ms memory limit 256 mb description it inverse transform 兩個長度為 2 n 的序列 a,b 下標從 0 到 2n 1 滿足 0 a i 10 9 且 b 由 a 變換而來,變換如下 b i sum limits ...