题解:AT_tkppc3_f 天使とふすま
fish_love_cat · · 题解
hdu 多校 day1 1004 类似题。感觉好像这个题有一万个,至少我肯定曾经做过,结论记得很清楚,但没找到原。
赛时就靠着前世的记忆猜了个结论过了,但是可删堆实现成了答辩光荣爆炸,卡空间吃七罚忍无可忍,重构忘开 long long 再吃一罚,八罚愤怒变区。
题外话是,赛时给队友的 SA 板子,因为鸡排的实现过于优秀 memset 一个
一眼贪心,考虑 exchange argument 来做。
考虑固定一个操作顺序,一个点的贡献其实就是前缀的
对于两个门
把列出来的不等式给移项一下,我们得出结论,按照
时间复杂度
#include<bits/stdc++.h>
#define int long long
using namespace std;
struct fish{
int a,b;
}a[200006];
bool cmp(fish x,fish y){
return x.a*y.b<x.b*y.a;
}
signed main(){
int n;
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i].a>>a[i].b;
sort(a+1,a+1+n,cmp);
int ans=0,sum=0;
for(int i=1;i<=n;i++)
ans+=a[i].b*sum,sum+=a[i].a;
cout<<ans;
return 0;
}
//『我不会说就算感到伤心也不能哭这种话。只不过,别把这个当作不笑的理由。』
//『伤心时可以笑,开心时也可以哭。』