P2345 [USACO04OPEN] MooFest G

题面

约翰的 \(n\) 头奶牛每年都会参加“哞哞大会”。

哞哞大会是奶牛界的盛事。集会上的活动很多,比如堆干草,跨栅栏,摸牛仔的屁股等等。

它们参加活动时会聚在一起,第 \(i\) 头奶牛的坐标为 \(x_i\),没有两头奶牛的坐标是相同的。

奶牛们的叫声很大,第 \(i\) 头和第 \(j\) 头奶牛交流,会发出
\(\max \{v_i,v_j\}\times |x_i − x_j |\)
的音量,其中 \(v_i\)\(v_j\) 分别是第 \(i\) 头和第 \(j\) 头奶牛的听力。

假设每对奶牛之间同时都在说话,请计算所有奶牛产生的音量之和是多少。

思路

直接暴力模拟 \(O(n^2)\) 可过。

注意要开 long long!

代码

#include <bits/stdc++.h>
#define int long long
using namespace std;

int n,ans;

struct cow{
	int v,x;
} cows[20005];

int max(int x,int y){
	return x>y?x:y;
}

signed main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cow &ncow = cows[i];
		cin>>ncow.v>>ncow.x;
	}
	for(int i=1;i<=n;i++){
		for(int j=i+1;j<=n;j++){
			ans+=(max(cows[i].v,cows[j].v)*abs(cows[i].x-cows[j].x));
		}
	}
	cout<<ans<<endl;
	return 0;
}
posted @ 2022-03-21 13:08  蒟蒻xiezheyuan  阅读(24)  评论(0编辑  收藏  举报