loj 2009 SCOI2015 小凸玩密室

2022-02-27 12:11:09 字數 1006 閱讀 5331

loj#2009. 「scoi2015」小凸玩密室

樹高不會很高<=20

點亮燈泡x,點亮x的乙個子樹,再點亮x另外的子樹,

然後回到x的父節點,點亮父節點之後再點亮父節點的其他子樹

所以對於乙個節點x,有這樣兩種情況

x還沒有被點亮,那麼下乙個被點亮的是x的乙個兒子

x是葉子節點,那麼下乙個被點亮的是它的祖先,或者是它祖先的兒子

設f[i][j]表示點亮i之後回到i的第j個祖先的最小花費

設g[i][j]表示點亮i之後回到i的第j個祖先的另乙個兒子的最小花費

然後從下到上,由兒子的狀態轉移到父親的狀態

討論一下兒子個數

最後模擬點亮過程統計答案

ans要開大

#include#includeusing namespace std; 

inline int read()

#define inf 2000000000000000000ll

#define ll long long

#define fa(i,j) ((1 << j - 1) <= i ? (i >> j) : -1 )

#define bro(i,j) ((i >> j - 1) ^ 1)

#define ls (i << 1)

#define rs (i << 1 | 1)

const int maxn = 200007;

int n;

ll a[maxn],dp[maxn][27][2],dis[maxn][27];

int main()

for(int i = n;i >= 1;-- i)

} ll ans = inf;

for(int x = 1;x <= n;x ++)

ans = min(ans,tmp);

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

return 0;

}

Loj2009 SCOI2015 小凸玩密室

仔細觀察以後可以發現,關於電燈有以下幾個性質 1根節點不是1,也就是每個點都可能為根節點,這就意味著不能用o n 2 的做法,只能考慮o nlogn 或者o n 2所有點亮的燈都是連在一起的 3對於乙個已經點亮的點,它的左右子樹只有3種可能 沒有染色,已經全部染完,正在染色 4當你準備將乙個點染色的...

loj2007 SCOI2015 國旗計畫

一道很有意思的貪心 倍增的題目。首先我們要把環變成鏈 複製一倍放到末尾去 這道題有乙個非常巧妙的性質 任意乙個區間都沒有別的被包含 假如這一道題有包含的話就要把被包含的那個區間給去掉 也就是說把把每乙個士兵的區間左端點從小到大排序後,右端點也是從小到大排好序的。然後我們從貪心的角度思考,對於乙個士兵...

SCOI2009 迷路 題解

恢復內容開始 題目描述 windy 在有向圖中迷路了。該有向圖有 nnn 個節點,windy 從節點 000 出發,他必須恰好在 ttt 時刻到達節點 n 1n 1n 1。現在給出該有向圖,你能告訴 windy 總共有多少種不同的路徑嗎?注意 windy 不能在某個節點逗留,且通過某有向邊的時間嚴格...