Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
36136 | daimo | 【S】T4 | C++ | 解答错误 | 0 | 1 MS | 320 KB | 897 | 2025-02-07 17:04:55 |
#include<bits/stdc++.h> #define int long long using namespace std; map<pair<pair<int,int>,int>,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); } string use[1010]; int cost[1010]; void solve(){ use[1]='1'; use[2]='2'; cost[1]=1; cost[2]=2; for(int i=3;i<=n;i++){ int min_add=1e18,min_use; for(int j=1;j<i;j++){ if(min_add>num[j]+(cost[j]+2)*num[i]){ min_add=num[j]+(cost[j]+2)*num[i]; min_use=j; } } use[i]=use[min_use]+"2"; use[min_use]+="1"; cost[i]=cost[min_use]+2; cost[min_use]++; } int ans=0; for(int i=1;i<=n;i++)ans+=cost[i]*num[i]; cout<<ans; } signed main(){ readin(); solve(); return 0; }