done T633664

This commit is contained in:
Zengtudor 2025-07-16 10:15:54 +08:00
parent 714f9830be
commit 49a3293e00

View File

@ -1,49 +1,77 @@
#include <algorithm>
#include <cmath>
#include <cstdint>
#include <ios>
#include <iostream>
#include <istream>
#include <unordered_set>
#include <vector>
using ll = int64_t;
ll n;
std::vector<ll> s;
std::vector<ll> edg;
// maxl = (n-1)*sum(s)
ll n,maxl;
std::vector<ll>s,lens;
std::vector<std::vector<bool>> dpo;
double ans{-1.0};
void setMaxl(){
ll sums{};
for(ll i=1;i<=n;i++){
sums+=s[i];
}
maxl=(n-1)*sums;
}
double getArea(double a,double b,double c){
double s = a+b+c;
double s = (a+b+c)/2;
return std::sqrt(s*(s-a)*(s-b)*(s-c));
}
void dfs(ll depth){
for(ll i=0;i<edg.size()-2+depth;i++){
ll sum{};
}
}
int main(){
std::iostream::sync_with_stdio(false);
std::cin.tie(nullptr);
std::cout.tie(nullptr);
std::cin>>n;
s.reserve(n+1);
edg.reserve(n*(n-1)/2+1);
for(ll i=0;i<n;i++){
ll tmp;
std::cin>>tmp;
s.emplace_back(tmp);
s.resize(n+1);
for(ll i=1;i<=n;i++){
std::cin>>s[i];
}
for(ll i=1;i<n;i++){
for(ll j=i+1;j<=n;j++){
lens.push_back(s[i]+s[j]);
}
}
setMaxl();
dpo.resize(maxl+1,std::vector<bool>(maxl+1,false));
dpo[0][0]=true;
for(ll k=0;k<(ll)lens.size();k++){
std::vector<std::vector<bool>> dpn(maxl+1,std::vector<bool>(maxl+1,false));
for(ll i=0;i<=maxl;i++){
for(ll j=0;j<=maxl;j++){
if(dpo[i][j]){
if(i+lens[k]<=maxl){
dpn[i+lens[k]][j]=true;
}
if(j+lens[k]<=maxl){
dpn[i][j+lens[k]]=true;
}
dpn[i][j]=true;
}
}
}
dpo=dpn;
}
for(ll i=0;i<s.size();i++){
for(ll j=0;j<s.size();j++){
if(i==j)continue;
edg.emplace_back(i+j);
for(ll i=0;i<=maxl;i++){
for(ll j=0;j<=maxl;j++){
if(dpo[i][j]){
ll c = maxl-i-j;
if(c<maxl/2.0){
ans = std::max(ans,getArea(i, j, c));
}
}
}
}
}
if(ans<0){
std::cout<<-1<<'\n';
}else{
std::cout<<ll(ans*10000)<<'\n';
}
}