每日一題 8月3日題目精講 小A的最短路

2021-10-09 06:42:40 字數 880 閱讀 5041

如果沒有纜車的話,就是乙個利用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啦 第三,也是本題第乙個問題 如果只按列選或者只按行選沒有交叉就一定是最大值嗎?沒有交叉只能保證選的數字最多,但是未必...