本文主要是介绍多校第二场 简单排序计算,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
思路:先按交叉相乘之差排序好了计算就行了。
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <map>
#include <cstdlib>
#include <queue>
#include <stack>
#include <vector>
#include <ctype.h>
#include <algorithm>
#include <string>
#include <set>
#define PI acos(-1.0)
#define maxn 210
#define INF 0x7fffffff
#define eps 1e-8
#define MOD 1000000009
typedef long long LL;
typedef unsigned long long ULL;
using namespace std;
struct ques
{LL t,s;
} q[100005];
bool cmp(ques a,ques b)
{return a.s*b.t-a.t*b.s>0;
}
int main()
{int tot;scanf("%d",&tot);for(int i=0; i<tot; i++)scanf("%I64d",&q[i].t);for(int i=0; i<tot; i++)scanf("%I64d",&q[i].s);sort(q,q+tot,cmp);long long tt=0;long long ans=0;for(int i=0; i<tot; i++){tt+=q[i].t;ans+=tt*q[i].s;}printf("%I64d\n",ans);return 0;
}
这篇关于多校第二场 简单排序计算的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!