2019-2020 ICPC, Asia Jakarta Regional Contest H. Twin Buildings(贪心)

题目链接
在这里插入图片描述
在这里插入图片描述
思路:如果按第二种方式建的话答案很容易想到是lr/2,那如果是第一种方式呢?我们可以先按左端点进行排序,由于左端点肯定是递增的,那么对于当前点i,它的最大矩形面积就是a【i】.l(min(1-i-1的最大右端点,a【i】.r)。

#include <bits/stdc++.h>
using namespace std;
const int maxn=1e5+1;
typedef long long ll;
struct node{
	ll l,r;
}s[maxn]; 
bool cmp(const node &a,const node &b)
{
	return a.l==b.l?a.r<b.r:a.l<b.l;
}
int main()
{
	int n,k;
	ll ans=0;
	scanf("%d",&n);
	for(int i=1;i<=n;++i){
		ll l,r;
		scanf("%lld %lld",&l,&r);
		if(l>r) swap(l,r);
		s[i].l=l,s[i].r=r;
		ans=max(ans,l*r);
	}
	sort(s+1,s+1+n,cmp);
	ll maxx=s[n].r;
	for(int i=n-1;i>=1;--i)
	{
		ans=max(ans,s[i].l*min(maxx,s[i].r)*2);
		maxx=max(maxx,s[i].r);
	}
	if(ans%2) printf("%lld.5\n",ans/2);
	else printf("%lld.0\n",ans/2);
}
发布了144 篇原创文章 · 获赞 0 · 访问量 4954

猜你喜欢

转载自blog.csdn.net/qq_42479630/article/details/104451402