【题目链接】click here~~
【题目大意】给你n个boy,n个girl ,然后W表示茶壶的最大容量,然后n个茶杯,每个都有不同的容量,要求boy的茶杯里的茶水是girl的两倍,且boy和boy容量一样,girl和girl 容量一样,问如何倒茶,最大化总的茶量
【解题思路】这道题本来很简单,第一次读题没读明白,以为每个茶杯的茶水都倒满了,然后一想不就是拿最大的计算吗。一交,直接WA,然后仔细读题,发现,每个茶杯的茶水可以选择的倒(坑~啊),那么既然boy和boy,girl和girl的茶水一样,那么只要分别找出最小的容量然后比较一下就可以,因为要求boy的茶杯里的茶水是girl的两倍,所以girl 的是最小的
代码:
#include <bits/stdc++.h> using namespace std; const int N=3*1e5+10; double num[N]; int main() { int n,w; while(scanf("%d%d",&n,&w)!=EOF) { for(int i=1; i<=2*n; ++i) scanf("%lf",&num[i]); sort(num+1,num+1+2*n); double res=min(num[1],num[n+1]/2);///排序玩后依次选择最小的 res=res*3*n; res=min(res,1.0*w); printf("%.6f\n",res); } return 0; }res=res*3*n=res*n+res*2*n;