1011-广告

T1

堆优化,枚举删除数量贪心。

#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdio>
#include <queue>
#define N 1111111
#define LL long long

using namespace std;
struct BLO{
	LL x,y;
	int id;
	friend bool operator < (const BLO &a,const BLO &b){
		return a.y>b.y;
	}
};
priority_queue<BLO>yq;
BLO arr[N];
int pn,dn;
bool isd[N];
LL ans=0;
int main(){
//	freopen("data/d2.in","r",stdin);\
	freopen("d.out","w",stdout);
	int T;
	scanf("%d",&T);
	while(T--){
		while(!yq.empty())yq.pop();
		ans=0;
		scanf("%d%d",&pn,&dn);
		for(int i=1;i<=pn;i++){
			scanf("%lld%lld",&arr[i].x,&arr[i].y);
			arr[i].id=i;
		}
		sort(arr+1,arr+pn+1,[](const BLO &a,const BLO &b){return a.x<b.x;});
		for(int i=dn+1;i<=pn;i++)
			yq.push(arr[i]);
		for(int i=dn;i>=0;i--){
			ans=max(ans,yq.top().y*arr[i+1].x);
			if(arr[i].y>yq.top().y){
				yq.pop();
				yq.push(arr[i]);
			}
		}
		printf("%lld\n",ans);
	}
}

T2

树上主席树,没过……

T3

咕掉了。

反思?

嗯,意识到自己的渺小……

我不知道是不是选择了错误的道路。

但是我知道只有走一走才有方向。


 

 

 

 

 

 

 

 

 

广告预警

 

 

 

 

 

 

 

 


大力安利一波$Vim$

主要说$diff$模式。

只要会用$diffsplit$就好啦

可以简单口胡教程 (为了防止没有配置文件的人喷我,这是裸的$Vim$)。

首先用$Vim$打开样例输出。

 1011-广告

大概长这样:

1011-广告

然后写 :diffsplit 你的输出 

1011-广告

然后如果你WA了。就会长这样……错误一目了然……

1011-广告

如果你AC了,就长这样……神清气爽……

1011-广告

当然加了配置文件的更好看辣……

还有一件事,××我忘了存代码了啊啊啊190行的树啊啊啊啊!呜呜……

上一篇:Bounce 弹飞绵羊 --- 分块/LCT/动态树


下一篇:[学习笔记]数列分块入门九题[LOJ6277-6285]