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
C++实现
#include<iostream>
#include<cstdio>
#include<algorithm>
#define maxn 100001
using namespace std;
int n,m;
long long ans;
struct node //结构体存储。
{
int v,x;
}e[100001];
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;++i) scanf("%d%d",&e[i].v,&e[i].x);
for(int i=1;i<=n;++i)
for(int j=i+1;j<=n;++j) //n方枚举累加。
ans+=max(e[i].v,e[j].v)*abs(e[i].x-e[j].x);
cout<<ans<<'\n';
return 0;
}

后续
接下来我会不断用C++来实现信奥比赛中的算法题、GESP考级编程题实现、白名单赛事考题实现,记录日常的编程生活、比赛心得,感兴趣的请关注,我后续将继续分享相关内容
用C++实现信奥 P2345 USACO04OPEN MooFest G&spm=1001.2101.3001.5002&articleId=147407126&d=1&t=3&u=a1cb485790b948409ffbf648f2103f72)
10

被折叠的 条评论
为什么被折叠?



