AcWing 329 圍欄障礙訓練場

2022-04-29 06:03:08 字數 857 閱讀 8569

大型補檔計畫

題目鏈結

考慮模擬這個過程。

\(f[i][0 / 1]\) 表示從第 \(i\) 個圍欄的 左/右端點開始往下走,走到原點的最小花費。

轉移很容易想到,就是考慮找到乙個往下走第乙個碰到的圍欄 \(j (j < i)\) (若沒有可以直接走到原點)。

然後 \(f[i][0 / 1] = min(f[j][0 / 1] + d_)\)。考慮快速找到往下走最先遇到的圍欄,就是乙個線段覆蓋動態問題,用線段樹維護即可。

#include #include using namespace std;

const int n = 30005, s = 200005, p = 100001;

typedef long long ll;

int n, m = p * 2, s, l[n], r[n], id[s << 2];

ll f[n][2];

int query(int p, int l, int r, int x)

void change(int p, int l, int r, int x, int y, int v)

int mid = (l + r) >> 1;

if (x <= mid) change(p << 1, l, mid, x, y, v);

if (mid < y) change(p << 1 | 1, mid + 1, r, x, y, v);

}int main()

printf("%d\n", min(f[n][0] + abs(l[n] - s), f[n][1] + abs(r[n] - s)));

return 0;

}

3 29學習計畫

1 背單詞 2 做實驗 1 學工科的課程多了之後,覺得背單詞的時候就和看 或者聽 一樣,可以清清腦子,換換思考方式。2 今天在做模電實驗,單管共射放大電路。我雖然在實驗室半年多了,但是學習的主要部分是軟體,而且硬體也是直接印刷出來的電路板,沒有接觸過通用實驗板 麵包板 通過老師和同學的介紹,還有對實...

3 29leetcode兩數相除

給定兩個整數,被除數 dividend 和除數 divisor。將兩數相除,要求不使用乘法 除法和 mod 運算子。返回被除數 dividend 除以除數 divisor 得到的商。整數除法的結果應當截去 truncate 其小數部分,例如 truncate 8.345 8 以及 truncate ...

329 矩陣中的最長遞增路徑

給定乙個整數矩陣,找出最長遞增路徑的長度。對於每個單元格,你可以往上,下,左,右四個方向移動。你不能在對角線方向上移動或移動到邊界外 即不允許環繞 示例 1 輸入 nums 9,9,4 6,6,8 2,1,1 輸出 4 解釋 最長遞增路徑為 1,2,6,9 示例 2 輸入 nums 3,4,5 3,...