Codeforces 557B Pasha and Tea 倒茶

题意:Pasha有2n个茶杯,每个茶杯的容积不同。Pasha有2n个朋友,男女各n个。现在Pasha要将总容积为w的茶倒在2n个茶杯里,分给这2n个朋友,并规定同性别的朋友茶杯中的茶容积相同,且每个男性朋友茶杯中茶的容积是每个女性朋友茶杯中茶的容积的两倍。求所有朋友茶杯中的茶容积之和的最大值。

水题。首先按照茶杯的容积排序,较小的n个茶杯肯定是分给了女生,较大的n个茶杯分给男生。若不然,如果某个男性朋友茶杯容积比某个女性朋友茶杯容积小的话,由于男性朋友茶杯中茶的容积较大,那么互换他们的茶杯,仍然可以装得下各自原来的茶。所以这样看来这种分法一定可以。那么既然每个同性朋友的茶一样多,我们只需考虑男性朋友中茶杯容积最小的和女性朋友中茶杯容积最小的即可。设女性朋友中茶杯容积最小的为x,男性朋友总茶杯容积最小的为y,由于总茶量只有w,故最后的答案为min(min(2x,y)*1.5*n,w)。

#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <string>
#include <algorithm>
#include <stack>
#include <queue>
#include <vector>
#include <map>
#include <set>
using namespace std;

const int MAX = 100005;
int n;
double w, a[2*MAX];

void input()
{
    for(int i = 0; i < 2*n; i++)
        scanf("%lf", &a[i]);
}

void solve()
{
    sort(a, a + 2*n);
    printf("%.6lf\n", min(min(2*a[0], a[n])*1.5*n, w));
}

int main()
{
    while(scanf("%d%lf", &n, &w) != EOF)
    {
        input();
        solve();
    }
    return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-03 04:44:58

Codeforces 557B Pasha and Tea 倒茶的相关文章

codeforces 557B. Pasha and Tea 解题报告

题目链接:http://codeforces.com/problemset/problem/557/B 题目意思:有 2n 个茶杯,规定第 i 个茶杯最多只能装 ai 毫升的水.现在给出 w 毫升的水,需要把这w毫升(可以不用光)的水倒入到这 2n 个茶杯中,使得分给n个男的每个水杯的水恰好是n个女的2倍(注意,n个男的水杯装的水是一样的,n 个女也是).现在问的是,怎样使得2n个杯装的水最多,求出这个值. ********************************************

codeforces 557B Pasha and Tea-水题

题意:总水量一定,有n个男孩,n个女孩,男孩的水是一样的,女孩的也是一样的,但是男孩的是女孩的两倍,有2*n个杯子,求最多能分给他们的总水量 分析:贪心法.不说了,就是cinTLE了. 代码: #include<iostream> #include<algorithm> #include<cstdio> using namespace std; int n; double a[200010]; double m; double ans; double min(doubl

Codeforces Round #311 (Div. 2) B. Pasha and Tea

[题目链接]click here~~ [题目大意]给你n个boy,n个girl ,然后W表示茶壶的最大容量,然后n个茶杯,每个都有不同的容量,要求boy的茶杯里的茶水是girl的两倍,且boy和boy容量一样,girl和girl 容量一样,问如何倒茶,最大化总的茶量 [解题思路]这道题本来很简单,第一次读题没读明白,以为每个茶杯的茶水都倒满了,然后一想不就是拿最大的计算吗.一交,直接WA,然后仔细读题,发现,每个茶杯的茶水可以选择的倒(坑~啊),那么既然boy和boy,girl和girl的茶水一

【CodeForces 557B】Pasha and Tea

题 题意 总共有 w 克蛋糕,2n 个盘子,第 i 个盘子容量为 ai ,n 个女孩和 n 个男孩,男孩得到的是女孩得到的蛋糕的两倍,求他们得到蛋糕的最大值. 分析 把盘子从小到大排序,然后 女生得到的蛋糕总量是 n*min(最小的盘子,第n+1小的盘子/2,w/(3n)). 答案就是女生得到的蛋糕的3倍. 代码 #include<cstdio> #include<algorithm> using namespace std; int n,a[1000005]; double w,

codeforces B. Pasha and String(贪心)

题意:给定一个长度为len的字符序列,然后是n个整数,对于每一个整数ai, 将字符序列区间为[ai,len-ai+1]进行反转.求出经过n次反转之后的序列! 1 /* 2 思路1:将区间为偶数次的直接去掉!对剩下的区间进行反转.超时了,智商上的压制... 3 */ 4 #include<iostream> 5 #include<cstdio> 6 #include<algorithm> 7 #include<stack> 8 #include<cstr

[ An Ac a Day ^_^ ] CodeForces 525B Pasha and String 技巧

题意就是一次次翻转字符串 然后输出最终的字符串 暴力一发O(n*m)果然超时了 因为每次翻转的的都是a-1到对称位置 所以一个位置翻转两次等于没有操作 所以只需要记录一下len/2的位置前的操作次数 O(len/2)…… 1 #include<stdio.h> 2 #include<iostream> 3 #include<algorithm> 4 #include<math.h> 5 #include<string.h> 6 #include&

CodeForces 595B Pasha and Phone

转换成某区间上被k整除的数字有几个. 处理出每一段有几种,然后乘一下就是答案. #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> using namespace std; const int maxn=100000+10; long long MOD=1e9+7; long long n,k; long long a[maxn],b[maxn]; long long

codeforces 525B Pasha and String

#include <cstdio> #include <iostream> #include <cstring> #include <set> #include <cmath> #include <algorithm> #include <vector> #include <map> using namespace std; char a[200010]; int num[200010]; int main()

暑假集训-合训第三场

ID Origin Title 31 / 51 Problem A HDU 4175 Class Schedule 27 / 140 Problem B HDU 4193 Non-negative Partial Sums   5 / 17 Problem C HDU 4212 Shut the Box   3 / 9 Problem D HDU 4216 Computational Geometry?   2 / 3 Problem E HDU 4219 Randomization?