Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
32852 liuyile 【S】T4 C++ 运行超时 30 2000 MS 296 KB 1911 2024-10-02 13:06:42

Tests(30/35):


#include <bits/stdc++.h> using namespace std; // #define int long long #define double long double int n,m; int a[100]; bool g[110][110]; bool p[110]; double S,S2; double res=1; inline void dfs(int dep){ if(dep==n+1){ // cerr<<dep<<" "<<S<<" "<<S2<<endl; if(S2) res=max(res,S*S/S2); return ; } if(p[dep]){ S+=a[dep]; S2+=a[dep]*a[dep]; dfs(dep+1); S-=a[dep]; S2-=a[dep]*a[dep]; return ; } dfs(dep+1); vector<int>T; bool ok=1; for(int i=1;i<dep;i++) if(g[dep][i]&&!p[i])ok=0; if(!ok)return ; for(int j=dep;j<=n;j++) if(!p[j]&&g[dep][j]){ p[j]=1; T.emplace_back(j); } S+=a[dep]; S2+=a[dep]*a[dep]; dfs(dep+1); S-=a[dep]; S2-=a[dep]*a[dep]; for(int x:T) p[x]=0; } signed main(){ ios::sync_with_stdio(0); cin.tie(0),cout.tie(0); // freopen("ex_sale1.in","r",stdin); // freopen("sale.out","w",stdout); cin>>n>>m; for(int i=1;i<=n;i++) cin>>a[i],g[i][i]=1; if(m==0){ double mx=1; sort(a+1,a+n+1); for(int l=1;l<=n;l++) for(int r=l+1;r<=n;r++){ double s=0,s2=0; for(int i=l;i<=r;i++) s+=a[i],s2+=a[i]*a[i]; // cout<<l<<" "<<r<<" "<<s<<" "<<s2<<endl; mx=max(s*s/s2,mx); } printf("%.10Lf\n",mx); } else{ for(int i=1;i<=m;i++){ int u,v; cin>>u>>v; g[u][v]=1; } for(int k=1;k<=n;k++) for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) g[i][j]|=g[i][k]&g[k][j]; dfs(1); printf("%.10Lf\n",res); } cout.flush(); fflush(stdout); return 0; }


测评信息: