1.排序不等式
1.1排队打水
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
#define ll long long
const int N=1e5+10;
int n;
int a[N];
int main() {
scanf("%d",&n);
for(int i=0;i<n;i++) scanf("%d",&a[i]);
sort(a,a+n);
ll res=0;
for(int i=0;i<n;i++) {
res+=(n-1-i)*a[i];
}
printf("%lld\n",res);
return 0;
}
2.绝对值表达式
2.1货仓选址
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 100010;
int n;
int a[N];
int main () {
scanf ("%d",&n);
for (int i = 1;i <= n;i++) scanf ("%d",&a[i]);
sort (a + 1,a + 1 + n);
int ans = 0;
for (int i = 1,j = n;i <= j;i++,j--) ans += a[j] - a[i];
printf ("%d\n",ans);
return 0;
}
3.推公式
3.1耍杂技的牛
#include<iostream>
#include<algorithm>
using namespace std;
struct cow{
int s,w;
bool operator<(const cow &W)const{
return s+w<W.s+W.w;
}
}cows[50010];
int main(){
int n;
scanf("%d",&n);
for(int i=0;i<n;i++)
scanf("%d%d",&cows[i].w,&cows[i].s);
sort(cows,cows+n);
int now=0,ans=-2e9;
for(int i=0;i<n;i++){
ans=max(ans,now-cows[i].s);
now+=cows[i].w;
}
printf("%d",ans);
}