From 49a3293e003d9b4ed6989ebabfe20e9d512d351e Mon Sep 17 00:00:00 2001 From: Zengtudor Date: Wed, 16 Jul 2025 10:15:54 +0800 Subject: [PATCH] done T633664 --- src/7/16/T633664f.cpp | 88 ++++++++++++++++++++++++++++--------------- 1 file changed, 58 insertions(+), 30 deletions(-) diff --git a/src/7/16/T633664f.cpp b/src/7/16/T633664f.cpp index f454df8..e8e4087 100644 --- a/src/7/16/T633664f.cpp +++ b/src/7/16/T633664f.cpp @@ -1,49 +1,77 @@ +#include #include #include +#include #include -#include -#include #include using ll = int64_t; -ll n; -std::vector s; -std::vector edg; +// maxl = (n-1)*sum(s) +ll n,maxl; +std::vectors,lens; +std::vector> 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>n; - s.reserve(n+1); - edg.reserve(n*(n-1)/2+1); - - for(ll i=0;i>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(maxl+1,false)); + dpo[0][0]=true; + for(ll k=0;k<(ll)lens.size();k++){ + std::vector> dpn(maxl+1,std::vector(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