文章

47

粉丝

109

获赞

8

访问

29.6k

头像
组队刷题 题解:
P1307
发布于2024年3月14日 16:00
阅读数 556



#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;
}

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发