SCOI2015 小凸玩密室 解題報告

2022-04-29 21:45:14 字數 834 閱讀 3434

雖然有心裡在想一些奇奇怪怪的事情的原因,不過還是寫太久了..

不過這個題本身也挺厲害的

注意第乙個被點亮的是任意選的,我最開始壓根沒注意到

\(dp_\)代表\(i\)號點子樹最後連出去的乙個點連的是它第\(j\)層的祖先

\(f_\)代表\(i\)號點子樹最後連出去的乙個點連的是它第\(j\)層祖先的另乙個兒子

然後我們就可以拼子樹,做換根了

要討論只有乙個兒子的情況

code:

#include #include #include #include #define ll long long

const int n=2e5+10;

using std::min;

template void read(t &x)

ll dp[2][n][20],a[n],edge[n],ans=1e18;

int n,log[n];

#define ls (id<<1)

#define rs (id<<1|1)

void dfs(int id)

else if(ls<=n)

}}void dfs0(int id,ll cost)

else if(ls<=n)

dfs0(ls,edge[id]*a[id>>1]+cost);

}int main()

} dfs(1);

dfs0(1,0);

printf("%lld\n",ans);

return 0;

}

2019.2.27

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 小凸玩密室

題目描述 小凸和小方相約玩密室逃脫,這個密室是一棵有 n 個節點的完全二叉樹,每個節點有乙個燈泡。點亮所有燈泡即可逃出密室。每個燈泡有個權值 a i 每條邊也有個權值 b i 點亮第 1 個燈泡不需要花費,之後每點亮乙個新的燈泡 v 的花費,等於上乙個被點亮的燈泡 u 到這個點 v 的距離 d u,...

SCOI2015 小凸玩矩陣

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