Playlist 二元組貪心

2021-09-18 04:45:54 字數 1259 閱讀 2534

playlist

題意:給定長度為n的陣列a[i],b[i],選擇至多k個元素,使得sum*min(b[i])最大

解析:貪心

按b[i]降序排列,依次裝入計算,求最大的乘積.

貪心規則是每次選擇乙個已經選到的max(a[x])裡最小的刪去,加上乙個a[i],因為是降序排列所以min(b)=b[i]

遍歷貪心

ac:

#include#define ios std::ios::sync_with_stdio(false);

#define pb push_back

#define ll long long

#define mod 1000000007

#define per(i,a,b) for(int i=a;i=b;i--)

#define maxn 300005

using namespace std;

struct node

}ee[maxn];

int main()

ans=max(ans,sum*ee[i].b);

}printf("%i64d\n",ans);

return 0;

}

時間限制:c/c++ 1秒,其他語言2秒

空間限制:c/c++ 262144k,其他語言524288k

64bit io format: %lld

小貓在研究二元組。

小貓在研究最大值。

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

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

第一行兩個正整數n,k,表示二元組數量與需要選的數量。

接下來n行,第i行兩個正整數ai,bi。

一行乙個正整數,表示最大的a_i的最小值與b_i的最小值之和。
示例1

3 2

1 12 3

3 1

3
1≤n≤105,1≤ai,bi≤109
解析:

二元組貪心

ac:

#include#define maxn 100005

using namespace std;

struct node

}ee[maxn];

int main()

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

return 0;

}

貪心 二元組最小值最大

ccpc省賽的時候和隊友討論了多值同時貪心怎麼最優,沒整出來,今天就碰到這種題了。私以為貪心不是特別容易憑空構造出一種嚴謹 正確的貪心方案 我這種鐵牌選手只能多看多學吧,沒什麼別的方法 題目 給定n個二元組 a1,b1 a2,b2 an,bn 請你從中選出恰好k個,使得ai的最小值與bi的最小值之和...

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

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

uva 1471 動態維護序列二元組

本題的題意就是從長為n的串中擷取一段,把剩下的兩端拼接起來構成乙個可以夠成的最長連續上公升子串行。首先本題若直接按照題意來先列舉擷取的起點和終點在數一數就需要o n 3 時間複雜度。n為2 10 5太大。預處理就可以避免數一數 以f i 表示以i位置為開頭的連續上公升序列的長度。g i 表示以i位置...