文章
47
粉丝
109
获赞
8
访问
29.6k
#include<stdio.h>
//1307 组队刷题 29.1 %贪心算法
int main() {
double x;//总的精力
double n;//有n行
while (scanf("%lf %lf",&x,&n)!=EOF) {
double sum = 0;//总的解题数目
if (x == -1 && n == -1) {
break;
}
double w[105] = { 0 };//每个板块的题目
double m[105] = { 0 };//消耗的精力
for (int i = 0; i < n; i++) {
scanf("%lf %lf", &w[i], &m[i]);
}
//让每份精力能够做最多的题在最前面
for (int i = 0; i < n; i++) {
for (int j = 0; j < n - 1 - i; j++) {
if ((w[j] / m[j]) < (w[j + 1] / m[j + 1])) {
int temp1 = w[j];
int temp2 = m[j];
w[j] = w[j + 1];
m[j] = m[j + 1];
w[j + 1] = temp1;
m[j + 1] = temp2;
}
}
}
for (int i = 0; i < n; i++) {
if (x >= m[i]) {
sum = sum + w[i];//加上做的题目
x = x - m[i];//减去所耗费的精力
}
else {
//所剩下的精力不足以把所有题做完
sum =sum+ x * (w[i]/m[i]);
break;
}
}
printf("%.3lf\n", sum);
}
return 0;
}
登录后发布评论
暂无评论,来抢沙发