如果沒有纜車的話,就是乙個利用lca求樹上任意兩點距離的板子題。(有了纜車,其實還是板子題……)
有了乙個纜車之後,無非就算考慮一下要不要坐纜車以及怎樣坐纜車,所以:不坐纜車xy的距離就是原來的距離dist(x,y),坐纜車的話要考慮是x到u點坐纜車,還是到v點坐纜車,即dist(x,u) + dist(v,y) 和ist(x,v) + dist(u,y)
#includeconst int max=3e5+50;
using namespace std;
template void read(t &x)
template void write(t x)
struct node
;vectorg[max*2];
int rdis[max];
int father[22][max],dep[max];
void dfs(int u,int f,int dis)
int len=g[u].size();
for(int i=0;idep[v])
for(int k=0;k<=21;k++)
}if(u==v)return u;
for(int k=21;k>=0;k--)
}return father[0][u];
}int distant(int u,int v)
int main());
g[b].push_back();
} init(n);
int x,y;
read(x);read(y);
int k;
read(k);
for(int i=1;i<=k;i++)
return 0;
}
板子題 每日一題 4月8日題目精講 黑白樹
試題鏈結 時間限制 c c 1秒,其他語言2秒 空間限制 c c 32768k,其他語言65536k 64bit io format lld 題目描述 一棵n個點的有根樹,1號點為根,相鄰的兩個節點之間的距離為1。樹上每個節點i對應乙個值k i 每個點都有乙個顏色,初始的時候所有點都是白色的。你需要...
每日一題 8月7日題目精講 雙棧排序
時間限制 c c 1秒,其他語言2秒 空間限制 c c 131072k,其他語言262144k 64bit io format lld tom最近在研究乙個有趣的排序問題。如圖所示,通過2個棧s1和s2,tom希望借助以下4種操作實現將輸入序列公升序排序。操作a 如果輸入序列不為空,將第乙個元素壓入...
每日一題 8月11日題目精講 矩陣消除遊戲
首先,我們很容易得到,先選哪一行 列 後選哪一行 列 只要選的一樣是不影響結果的,這個我相信大家都能看出來啦 第二,如果只按行選,或者只按列選,貪心妥妥的 把合最大的幾行加起來就ok啦 第三,也是本題第乙個問題 如果只按列選或者只按行選沒有交叉就一定是最大值嗎?沒有交叉只能保證選的數字最多,但是未必...