51nodP1380 夾克老爺的逢三抽一

2022-05-07 19:45:10 字數 613 閱讀 2870

此題的核心在於如何實現反悔操作.

我們可以在選出當前最優並刪去左右節點後,在當前最優的節點處再次新增乙個\(a[r[i]]+a[l[i]]-a[i]\)的點,如果再次選這個點就意味著一次反悔.

#pragma gcc optimize(3)

#include#define il inline

#define rg register

#define pli pairusing namespace std;

typedef long long ll;

const int o = 1e5 + 10;

templateil tt read()

ll ans, a[o];

sets;

int n, lst[o], nxt[o];

il void delete(int u)

int main()

n /= 3;

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

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

return 0;

}

51Nod 1380 夾克老爺的逢三抽一

acm模版 首先發一下官方題解吧 按照官方題解寫的 發現自己一直在第 21 組資料 tl e 很明顯,這組資料是後來加上去專門卡資料的。於是發現自己的 中忽略了乙個部分是暴力的思維,在查詢左右兩側可選的村民時,我用了兩個迴圈,這顯然是不行的,所以我需要使用鍊錶的思維,這樣查詢的複雜度就是 o 1 了...

51nod 1380 夾克老爺的逢三抽一

又到了諾德縣的百姓孝敬夾克大老爺的日子,帶著數量不等的銅板的村民準時聚集到了村口。夾克老爺是一位很 善良 的老爺,為了體現他的仁慈,有一套特別的收錢的技巧。1 讓所有的村民排成一隊,然後首尾相接排成乙個圈。2 選擇一位村民收下他的銅錢,然後放過他左右兩邊的村民。3 讓上述三位村民離開隊伍,並讓左右兩...

51nod 1380 夾克老爺的逢三抽一

題目 題解 設最大值為b,左邊為a,右邊為c 解釋一下為什麼要把a c b放回去 因為b不一定是最優的,說不定a c和b差不多大,同時選a c可能比b更優,把a c b放回去,若再次取出,則相當於用兩次選了a和c,滿足題意,也滿足貪心 include using namespace std type...