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

题目链接
2019-2020 ICPC, Asia Jakarta Regional Contest H. Twin Buildings(贪心)_第1张图片
2019-2020 ICPC, Asia Jakarta Regional Contest H. Twin Buildings(贪心)_第2张图片
思路:如果按第二种方式建的话答案很容易想到是lr/2,那如果是第一种方式呢?我们可以先按左端点进行排序,由于左端点肯定是递增的,那么对于当前点i,它的最大矩形面积就是a【i】.l(min(1-i-1的最大右端点,a【i】.r)。

#include 
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);
}

你可能感兴趣的:(贪心)