贪心法水题,代码如下:
#include <cstdio>
#include <algorithm>
struct rice{
int p, w;
}r[1010];
bool cmp(rice x, rice y){
return x.p < y.p;
}
int main(){
int c, n, i, t, m;
double ans;
scanf("%d", &c);
while(c--){
scanf("%d %d", &n, &m);
for(i = 0; i < m; i++)
scanf("%d %d", &r[i].p, &r[i].w);
std::sort(r, r + m, cmp);
for(t = 0, i = 0, ans = 0; i < m && t < n; i++){
t += r[i].p * r[i].w;
ans += r[i].w;
}
if(t > n){
ans -= (t - n) * 1.0/ r[i-1].p;
}
printf("%.2lf\n", ans);
}
return 0;
}