链接
我们都知道,云计算是将计算运行在别的地方,正如我们接下来的问题需要将困难的问题转移到让聪明的你来解决一样。
现在有nn个三元组(a,b,c)(a,b,c),你需要将他们以任意顺序安排在一个一维数组里,假设数组下标以11开始,对于一个你安排好之后的数列,我们定义他的价值是:
请问这个数列所有可能中,他最小价值应该是多少?
不是太会,先写下来。
代码:
#include<iostream>
#include<algorithm>
using namespace std;
struct node{
int a,b,c;
}sum[100005];
int cmp(node s,node s1){
return s.a+s.c-s.b>s1.a+s1.c-s1.b;
};
int main()
{
int t;
scanf("%d",&t);
for(int i=1;i<=t;i++){
scanf("%d%d%d",&sum[i].a,&sum[i].b,&sum[i].c);
}
sort(sum+1,sum+t+1,cmp);
long long num = 0;
for(int i=1;i<=t;i++){
num += (i+1)*sum[i].a+(t-i)*sum[i].b+(i+2)*sum[i].c;
}
printf("%lld\n",num);
}