P2345 [USACO04OPEN] MooFest G
题目背景
P5094 [USACO04OPEN] MooFest G 加强版
题目描述
约翰的 n n n 头奶牛每年都会参加“哞哞大会”。
哞哞大会是奶牛界的盛事。集会上的活动很多,比如堆干草,跨栅栏,摸牛仔的屁股等等。
它们参加活动时会聚在一起,第 i i i 头奶牛的坐标为 x i x_i xi,没有两头奶牛的坐标是相同的。
奶牛们的叫声很大,第
i
i
i 头和第
j
j
j 头奶牛交流,会发出
max
{
v
i
,
v
j
}
×
∣
x
i
−
x
j
∣
\max\{v_i,v_j\}\times |x_i − x_j |
max{vi,vj}×∣xi−xj∣
的音量,其中
v
i
v_i
vi 和
v
j
v_j
vj 分别是第
i
i
i 头和第
j
j
j 头奶牛的听力。
假设每对奶牛之间同时都在说话,请计算所有奶牛产生的音量之和是多少。
输入格式
第一行:单个整数 n n n, 1 ≤ n ≤ 2 × 1 0 4 1\le n\le2\times 10^4 1≤n≤2×104
第二行到第 n + 1 n + 1 n+1 行:第 i + 1 i + 1 i+1 行有两个整数 v i v_i vi 和 x i x_i xi( 1 ≤ v i , x i ≤ 2 × 1 0 4 1\le v_i,x_i\le2\times 10^4 1≤vi,xi≤2×104)。
输出格式
单个整数:表示所有奶牛产生的音量之和
输入输出样例 #1
输入 #1
4
3 1
2 5
2 6
4 3
输出 #1
57
代码内容
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll N=1e5+10;
struct node
{
ll v,x;
}a[N];
int main()
{
ll n;
cin>>n;
for(ll i=1;i<=n;i++) cin>>a[i].v>>a[i].x;
ll ans=0;
for(ll i=1;i<=n;i++)
for(ll j=i+1;j<=n;j++)
ans+=max(a[i].v,a[j].v)*abs(a[i].x-a[j].x);
cout<<ans<<endl;
return 0;
}