貪心 二元組最小值最大

2022-05-10 02:45:43 字數 811 閱讀 9993

ccpc省賽的時候和隊友討論了多值同時貪心怎麼最優, 沒整出來, 今天就碰到這種題了。。。

私以為貪心不是特別容易憑空構造出一種嚴謹/正確的貪心方案

我這種鐵牌選手只能多看多學吧,沒什麼別的方法

題目:

給定n個二元組(a1,b1),(a2,b2),…,(an,bn),請你從中選出恰好k個,使得ai的最小值與bi的最小值之和最大。

請輸出ai的最小值與bi的最小值之和

解法:

先貪心乙個值, 然後動態貪心第二個值, 類似二分答案

按a 或 b值從大到小排序

然後從前先後遍歷, 維護乙個答案小頂堆(裡面是另乙個值)

易證:若堆體積大於k 彈出的堆頂必然不是最優解,

當體積等於k時 堆頂必然是當前1 - now中 b值的範圍最優解,

arr[now].fst 也是最優解 (開始已排序固定)

最後動態更新答案既為正確值

**

const int maxn = 1e6 + 10;

struct node

arr[maxn];

bool cmp(node a, node b)

priority_queue , greater> pq;

int main()

sort(arr, arr + n, cmp);

ll ans = -inf;

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

}cout << ans << '\n';

return 0;

}

Playlist 二元組貪心

playlist 題意 給定長度為n的陣列a i b i 選擇至多k個元素,使得sum min b i 最大 解析 貪心 按b i 降序排列,依次裝入計算,求最大的乘積.貪心規則是每次選擇乙個已經選到的max a x 裡最小的刪去,加上乙個a i 因為是降序排列所以min b b i 遍歷貪心 ac...

二元組排序(動態規劃)(C )

題目 給定乙個n 2的二維陣列,看作是乙個個二元組,例如 a1,b1 a2,b2 a3,b3 規定,如果想把二元陣列甲放在二元陣列乙上,甲中的a值必須大於乙中的a值,甲中的b值必須也得大於乙中的b值,問,給定乙個二元陣列,問可以羅成這樣的陣列幾個?例 5,4 6,4 6,7 2,3 最多可以羅3個,...

二分 最大的最小值

mad jim jaspers為了證明釹磁鐵的強大,拿來了乙個有n個小槽的長木條,m個釹磁鐵,第i個小槽在xi的位置上,為了不讓磁鐵互相吸引,每塊磁鐵離其他磁鐵的距離應該盡可能的大。請你幫mjj寫乙個程式,求出所有磁鐵之間最小距離的最大值。只要磁鐵距離大於等於1就不會互相吸引。輸入格式 第一行兩個數...