洛谷题解:CF557B Pasha and Tea

题目传送门。

题目大意


给你 n n n 个男生和女生, 给定 w w w 毫升水量 ,再给你 2 n 2n 2n 个数 a i a_i ai ,告诉你男生喝水量是女生的 2 2 2 倍,并且茶杯只能倒 w w w 毫升水,让你求出最大倒水量是多少。

分析


一道贪心题。

显然男生比女生的水量大,那么就要让男生的茶杯比女生的大一些,所以排序。

sort(a + 1, a + n * 2 + 1);

但是结果 c n t cnt cnt 不能超过一次倒水量,所以将它和 x × 3 × n x \times 3 \times n x×3×n 进行比较,取较小值。

cnt = min (x * 3 * n, w * 1.0000000);

最后记得保留精度即可。

printf("%.7lf", cnt);

Code


#include <bits/stdc++.h>
using namespace std;
int n, w;
double x, cnt;
double a[200007];
signed main()
{
	scanf ("%d%d", &n, &w);
	// 有2*n个人,输入2*n个茶杯 
	for( int i = 1; i <= 2 * n; i++)
	{
		scanf ("%lf", &a[i]);
		// 7位精度 
		a[i] *= 1.0000000; 
	}
	// 排序 
	sort(a + 1, a + n * 2 + 1);
	// 一次倒的x要在女生<=的a[1]和2*男生<=的a[n+1]里选较小值 
	x = min (a[1], a[n + 1] / 2);
	// 在总量和一次倒的水量取较小值,作为答案 
	cnt = min (x * 3 * n, w * 1.0000000);
	// 输出保留7位小数 
	printf("%.7lf", cnt);
	return 0;
}

AC 记录。

完结撒花。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值