洛谷5665 劃分(單調佇列優化DP)

2022-05-14 13:48:11 字數 937 閱讀 5784

點此看題面

感覺這個東西一看就很有單調性。(然而去年的我在考場上並沒能想起來。。。)

不嚴謹地證一下,假設我們現在有三個塊\(a,b,c\),有三種可能:

顯然這三種可能性代價依次遞增。

也就是說,我們的決策點能右移一定右移。

\(i\)能從\(j\)轉移的條件是\(s_i-s_j\ge s_j-s_\),其中\(g_j\)為\(j\)的決策點。

移下項令其分為只與\(i\)有關和只與\(j\)有關兩部分,就是\(s_i\ge 2s_j-s_\)。

那麼我們只要開乙個單調佇列,維護\(2s_j-s_\)遞增即可。

又不是真的在考場上。

懶了點直接__in128了。

#include#define tp template#define ts template#define reg register

#define ri reg int

#define con const

#define ci con int&

#define i inline

#define w while

#define n 40000000

using namespace std;

int n,ty,a[n+5],q[n+5],g[n+5];long long s[n+5];

namespace data//大資料生成

//甚至造資料都要寫個雙指標。。。 }}

i void write(__int128 x) //__int128需要輸優

int main()

__int128 t=0;for(i=n;i;i=g[i]) t+=(__int128)(s[i]-s[g[i]])*(s[i]-s[g[i]]);return write(t),0;//計算答案

}

洛谷P5665 CSP2019 劃分

洛谷p5665 對於每乙個斷點,最後一段的和在所有合法解中都是最小的。顯然滿足條件的解是唯一的。構造序列 b bb,其中 b ib i bi 表示滿足條件的解中倒數第 i ii 段的和,並在序列 b bb 的末尾補上無限個 000。現在我們需要證明對於任意乙個不滿足條件的解,用同樣的方法構造出序列 ...

CSP2019 D2T2 劃分 (單調佇列DP)

洛谷傳送門 就是這道題搞我退役考場上寫了n 2 64分,結果爆成8 12分。直接gg。考場上想到正解的寫法被自己否決了 題解傳送門 看到這道送我退役的題目 太想寫題解 六行o n2 o n 2 dp 8888 分 for int i 1 i n i a i a i 1 f 0 d 0 0 for i...

洛谷P1725琪露諾 單調佇列優化dp

在幻想鄉,琪露諾是以笨蛋聞名的冰之妖精。某一天,琪露諾又在玩速凍青蛙,就是用冰把青蛙瞬間凍起來。但是這只青蛙比以往的要聰明許多,在琪露諾來之前就已經跑到了河的對岸。於是琪露諾決定到河岸去追青蛙。小河可以看作一列格仔依次編號為0到n,琪露諾只能從編號小的格仔移動到編號大的格仔。而且琪露諾按照一種特殊的...