JZOJ 5849 d

Posted traveller-ly

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JZOJ 5849 d相关的知识,希望对你有一定的参考价值。

Description

技术分享图片

Input

技术分享图片

Output

技术分享图片

Data Constraint

技术分享图片

 

 

做法:考虑贪心使得mina*minb最大,先以a为关键字排序,然后枚举删除最小的0~m个ai,对应删除最小的bi,然后更新答案。

技术分享图片
 1 #include <cstdio>
 2 #include <cstring>
 3 #include <iostream>
 4 #include <queue>
 5 #include <algorithm>
 6 #define M 100007
 7 #define LL long long
 8 #define rep(i,a,b) for(int i=a;i<=b;i++)
 9 using namespace std;
10 int T,n,m;
11 LL ans;
12 struct arr{
13     int a,b,site;
14 }f[M];
15 bool v[M];
16 
17 LL max(LL a,LL b) {return a>b?a:b;}
18 
19 int Cmp(arr x,arr y){
20     return x.a<y.a;
21 }
22 
23 bool operator <(const arr &x,const arr &y){
24     return x.b>y.b;
25 }
26 
27 void Init(){
28     memset(f,0,sizeof(f));
29     scanf("%d%d",&n,&m);
30     rep(i,1,n)    scanf("%d%d",&f[i].a,&f[i].b),f[i].site=i;
31     sort(1+f,f+n+1,Cmp);
32 }
33 
34 void Work(){
35     priority_queue<arr> q;
36     ans=0;
37     rep(i,m+1,n) q.push(f[i]);
38     arr now=q.top();
39     ans=max(ans,(LL)f[m+1].a*now.b); 
40     for(int i=m;i>=1;i--){
41         q.pop();
42         q.push(f[i]);
43         now=q.top();
44         ans=max(ans,(LL)f[i].a*now.b);
45     }
46     now=q.top();
47     ans=max(ans,(LL)f[1].a*now.b);
48     printf("%lld
",ans);
49 }
50 
51 int main() {
52     freopen("d.in","r",stdin);
53     freopen("d.out","w",stdout);
54     scanf("%d",&T);
55     for(;T--;){
56         Init();
57         Work();
58     }
59 }
View Code

 

以上是关于JZOJ 5849 d的主要内容,如果未能解决你的问题,请参考以下文章

[jzoj 6084] [GDOI2019模拟2019.3.25] 礼物 [luogu 4916] 魔力环 解题报告(莫比乌斯反演+生成函数)

JZOJ4419GDOI2016模拟4.2hole(四~三维偏序问题)

种花 [JZOJ4726] [可撤销贪心]

纪中集训2019.08.20JZOJ6310Global warming

[JZOJ 5697] 农场

JZOJ622720190621ichi