點此看題面
感覺這個東西一看就很有單調性。(然而去年的我在考場上並沒能想起來。。。)
不嚴謹地證一下,假設我們現在有三個塊\(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,琪露諾只能從編號小的格仔移動到編號大的格仔。而且琪露諾按照一種特殊的...