题目链接:hdu 4882 ZCC Loves Codefires
题目大意:就是CF的比赛,根据时间的推迟会相应的扣掉题目的分数,问说最少扣几分。
解题思路:相邻交换法,判断两个题目之间的比率确定前后位置。
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int maxn = 1e5+5;
typedef __int64 ll;
struct state {
ll e, k;
}s[maxn];
int n;
bool cmp (const state& a, const state &b) {
return a.e * b.k < a.k * b.e;
}
int main () {
while (scanf("%d", &n) == 1 && n) {
for (int i = 0; i < n; i++)
scanf("%I64d", &s[i].e);
for (int i = 0; i < n; i++)
scanf("%I64d", &s[i].k);
sort(s, s + n, cmp);
ll ans = 0, t = 0;
for (int i = 0; i < n; i++) {
t += s[i].e;
ans += s[i].k * t;
}
printf("%I64d\n", ans);
}
return 0;
}
hdu 4882 ZCC Loves Codefires(贪心),布布扣,bubuko.com
hdu 4882 ZCC Loves Codefires(贪心)
原文:http://blog.csdn.net/keshuai19940722/article/details/38092563