SCOI2015 小凸玩密室

2022-09-01 04:48:11 字數 934 閱讀 3090

題目描述

小凸和小方相約玩密室逃脫,這個密室是一棵有 $n$ 個節點的完全二叉樹,每個節點有乙個燈泡。點亮所有燈泡即可逃出密室。每個燈泡有個權值 $a_i$,每條邊也有個權值 $b_i$。

點亮第 $1$ 個燈泡不需要花費,之後每點亮乙個新的燈泡 $v$ 的花費,等於上乙個被點亮的燈泡 $u$ 到這個點 $v$ 的距離 $d(u, v)$,乘以這個點的權值 $a_v$。

在點燈的過程中,要保證任意時刻所有被點亮的燈泡必須連通,在點亮乙個燈泡後必須先點亮其子樹所有燈泡才能點亮其他燈泡。請告訴他們,逃出密室的最少花費是多少。

資料範圍

$1 \leq n \leq 2 \times 10 ^ 5, 1 < a_i, b_i \leq 10 ^ 5$

題解

考慮暴力, $f_$ 表示走完 $i$ 子樹,直接走到 $j$ 的最小花費,轉移考慮用左右兒子轉移。

可以發現我們只需要知道 $j$ 為 $i$ 的祖先或者祖先的另乙個兒子的 $f$ 值即可,於是複雜度降至 $nlogn$ 。

注意 $i$ 為葉子或者 $i$ 只有左兒子的情況。

**

#include #define ll long long

using

namespace

std;

const

int n=2e5+5

;int n;ll a[n],b[n],f[n][20],g[n][20],ans=2e18;

intmain()

}for (int i=n,l,r;i;i--)

}for (int j,x,i=1;i<=n;i++)

ans=min(ans,v);

}return cout<0

;}

SCOI2015 小凸玩密室

演算法難度5,思維難度7,難度6 給定一棵n nn個點的完全二叉樹,樹邊帶權,點帶val x val x val x 的權值。定義兩個點的距離dis u,v dis u,v dis u,v 為u uu到v vv的最短路徑上經過的邊權之和。你一開始可以選擇乙個起始點,並點亮這個點,這一步不需要花費。你...

SCOI2015 小凸玩密室 解題報告

雖然有心裡在想一些奇奇怪怪的事情的原因,不過還是寫太久了.不過這個題本身也挺厲害的 注意第乙個被點亮的是任意選的,我最開始壓根沒注意到 dp 代表 i 號點子樹最後連出去的乙個點連的是它第 j 層的祖先 f 代表 i 號點子樹最後連出去的乙個點連的是它第 j 層祖先的另乙個兒子 然後我們就可以拼子樹...

SCOI2015 小凸玩矩陣

題目很明顯的乙個事情,求第 k 大的最小值,一般採用的做法是二分 有人會問,但是不滿足二分性啊,接著往下看 考慮二分答案,但是如何檢驗 mid 是對還是錯,考慮每次只能取 mid 的數字,如果能取到 n k 1 個數字以上就可以,至於看能否取到 n k 1 個,採用二分圖匹配,左邊的點是行,右邊的點...