1.例题7.2 FatMouse'sTrade
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
const int MAXN = 1000;
struct JavaBean {
double weight;
double cost;
};
JavaBean arr[MAXN];
bool Compare(JavaBean x,JavaBean y){
return x.weight / x.cost > y.weight / y.cost;
}
int main()
{
int n,m;
while (scanf("%d%d",&m,&n) != EOF){
if(n == -1 && m == -1){
break;
}
for(int i = 0; i < n; ++i){
scanf("%lf%lf",&arr[i].weight,&arr[i].cost);
}
sort(arr,arr+n,Compare);
double answer = 0;
for(int i = 0;i < n; ++i){
if(m >= arr[i].cost){
m -= arr[i].cost;
answer += arr[i].weight;
}else{
answer += arr[i].weight * (m / arr[i].cost);
m = 0;
break;
}
}
printf("%.3f\n",answer);
}
return 0;
}
2.例题7.3Senior'Gun
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
const int MAXN = 100000 + 10;
long long gun[MAXN];
long long monster[MAXN];
bool Compare(long long x, long long y){
return x > y;
}
int main(){
int caseNumber;
scanf("%d",&caseNumber);
while(caseNumber--){
int n,m;
scanf("%d%d",&n,&m);
for(int i = 0; i < n; ++i){
scanf("%lld",&gun[i]);
}
for(int i = 0;i < m; ++i){
scanf("%lld",&monster);
}
sort(gun, gun + n, Compare);
sort(monster, monster + m);
long long answer = 0;
for(int i = 0; i < n; ++i){
if(i >= m || gun[i] <= monster[i]){
break;
}
answer += (gun[i] - monster[i]);
}
printf("%lld\n",answer);
}
return 0;
}