91分,long long没用
  • 板块题目总版
  • 楼主SilverLi
  • 当前回复1
  • 已保存回复1
  • 发布时间2023/2/23 23:02
  • 上次更新2023/10/23 23:59:23
查看原帖
91分,long long没用
688783
SilverLi楼主2023/2/23 23:02

P1284 三角形牧场

WAWA22 个, LongLong LongLong没有用

#include <bits/stdc++.h>
using namespace std;
#define do double
#define ll long long
#define iv inline void
#define ii inline int
ii read();
const int N=1605;
int n,a[N],s;
ll c;
do ans;
bool f[N][N];
inline double p(int A,int B,int C) {
	do P=(A+B+C)/2.0;
	return sqrt(P*(P-A)*(P-B)*(P-C));
}
ii ch(int a,int b,int c) {return (a>b+c||b>a+c||c>a+b||a<b-c||
								a<c-b||b<a-c||b<c-a||c<a-b||c<b-a);}
signed main() {
   n=read();
   for(int i=1;i<=n;++i)	a[i]=read(),s+=a[i];
   f[0][0]=1;
   for(int i=1;i<=n;++i)
   	for(int j=s/2;j>=0;--j)
   		for(int k=s/2;k>=0;--k) {
   			if(j-a[i]>=0&&f[j-a[i]][k]) f[j][k]=1;
				if(k-a[i]>=0&&f[j][k-a[i]]) f[j][k]=1;}
   for(int i=s/2;i>0;--i)
   	for(int j=s/2;j>0;--j)
   		if(f[i][j]&&(!(ch(i,j,s-i-j))))
   			ans=max(ans,p(i,j,s-i-j));
   printf("%lld",(ll)(ans*100));
	return 0;
}

ii read() {
	char ch=getchar();
	int x=0,f=1;
	while(ch<'0'||ch>'9') {if(ch=='-')	f=-1;ch=getchar();}
	while('0'<=ch&&ch<='9'){x=(x<<1)+(x<<3)+(ch^48);ch=getchar();}
	return x*f;
}
2023/2/23 23:02
加载中...