Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
35972 | daimo | 【S】T4 | C++ | 运行超时 | 0 | 2000 MS | 62724 KB | 988 | 2025-02-07 12:25:07 |
#include<bits/stdc++.h> #define int long long using namespace std; map<pair<pair<int,int>,string>,int>f; int n; int num[1010]; void readin(){ cin>>n; for(int i=1;i<=n;i++)cin>>num[i]; sort(num+1,num+1+n); reverse(num+1,num+1+n); } int dfs(int l,int r,string s,int cost){ if(f[make_pair(make_pair(l,r),s)])return f[make_pair(make_pair(l,r),s)]; if(s.length()>=14)return 0x3f3f3f3f3f3f3f3f; if(l==r){ f[make_pair(make_pair(l,r),s)]=cost*num[l]; return cost*num[l]; }else{ int res=0x3f3f3f3f3f3f3f3f; for(int i=l;i<r;i++){ res=min(res,dfs(l,i,s+"1",cost+1)+dfs(i+1,r,s+"2",cost+2)); } f[make_pair(make_pair(l,r),s)]=res; return res; } } void solve(){ int ans=0x3f3f3f3f3f3f3f3f; for(int i=1;i<n;i++){ ans=min(ans,dfs(1,i,"1",1)+dfs(i+1,n,"2",2)); } cout<<ans<<endl; } signed main(){ readin(); solve(); return 0; }