4789 啊孤獨感放辣椒

2022-09-01 04:12:10 字數 1117 閱讀 4818

題目描述

$n$ 堆石子,第 $i$ 堆有 $a_i$ 個石子。將 $n$ 堆石子合併成三堆,使得這三堆的極差最小。

資料範圍

$n \le 24,a_i \le 10^9$ 。

題解

考慮折半搜尋,考慮如何將兩邊的三元組合併得到答案。

考慮兩邊的三元組分別為 $(a_1,b_1,c_1)$ 和 $(a_2,b_2,c_2)$ ,那麼將它們合併後為 $(a_1+a_2,b_1+b_2,c_1+c_2)$ ,為了方便我們令 $a_1+a_2 \ge b_1+b_2 \ge c_1+c_2$ ,這樣這兩組的貢獻為 $a_1+a_2-c_1-c_2$ 。

於是我們可以令 $f=a-b,g=b-c$ ,上述條件就變為要求 $f_1+f_2,g_1+g_2 \ge 0$ ,求 $f_1+f_2+g_1+g_2$ 最小值,所以我們可以按照 $f$ 排序進行雙指標, $g$ 用樹狀陣列維護即可。

效率 $o(nlogn)$ ,其中 $n=3^}$ 。

**

#include #define ll long long

using

namespace

std;

const

int n=6e5+5

;int n,m,a[25

],f,g;

ll b[n],s[n],a=2e18;

struct

of[n],g[n];

void dfs(int

x);

else g[++g]=(o);

return

; }

for (int i=0;i<3;i++)

s[i]+=a[x],dfs(x+1),s[i]-=a[x];

}bool cmp(o x,o y)

#define lb(z) lower_bound(b+1,b+m+1,z)-b

void upd(int

x,ll v)

ll qry(

intx)

intmain()

cout

}

做個孤臣又何妨

人太敏感活得雖豐富卻煩亂 當決定要考研的時候,就知道會放棄一些東西的 就知道一些事情是必不可免的 真的孤臣難做嗎?也許真的這段路要自己走下去了 不管多苦多累,也是這樣了 畢竟上班後找不到大學宿舍的感覺了 上網碰到宿舍的,酸酸的感覺,想哭 南京的小子考上研了,八月份要來保定 互相在網上叫囂著要灌死對方...

漢孤臣 倍增LCA模板

例題 模板題 include include include include include include include include using namespace std const int maxn 100000 50 int n,deep maxn h maxn f maxn 20 q...

心情與孤鶩一色

如果幸福距離我有100公尺,那麼我最多會靠近它50,還有半百,我會等著它向我走進。不習慣主動,一件物,乙個人,無論有多麼喜歡它,如果等待超過了我的負荷,我會自動放棄,把它丟在我永遠也不會轉身的角落。傷心是自己的事情,不敢對在乎的人說,害怕ta們擔心,不會對無謂的人說,擔心ta們真的無所謂,所以,只有...