ICPC NEAU Programming Contest 2020 H 排序
程序员文章站
2022-05-12 11:45:39
...
思路:
是道原题。可以直接拆出来变成 ,
是固定的,所以再结合乘起来即可。
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <vector>
#include <queue>
#include <map>
using namespace std;
typedef long long ll;
const int maxn = 4e5 + 7;
const int mod = 1e9 + 7;
ll a[maxn],b[maxn];
int cmp(ll x,ll y) {
return x > y;
}
int main() {
int T;scanf("%d",&T);
while(T--) {
ll n;scanf("%lld",&n);
for(int i = 1;i <= n;i++) {
scanf("%lld",&a[i]);
}
for(int i = 1;i <= n;i++) {
scanf("%lld",&b[i]);
}
ll ans = 0;
for(ll i = 1;i <= n;i++) {
b[i] = b[i] * i * (n - i + 1);
}
sort(a + 1,a + 1 + n,cmp);
sort(b + 1,b + 1 + n);
for(int i = 1;i <= n;i++) {
ans = (ans + b[i] % mod * a[i] % mod) %mod;
ans %= mod;
}
printf("%lld\n",ans);
}
return 0;
}