codeforces 557B. Pasha and Tea 解题报告
题目链接:http://codeforces.com/problemset/problem/557/B
题目意思:有 2n 个茶杯,规定第 i 个茶杯最多只能装 ai 毫升的水。现在给出 w 毫升的水,需要把这 w 毫升(可以不用光)的水倒入到这 2n 个茶杯中,使得分给 n 个男的每个水杯的水恰好是 n 个女的2倍(注意,n 个男的水杯装的水是一样的,n 个女也是)。现在问的是,怎样使得 2n 个杯装的水最多,求出这个值。
*********************************************( 又开始误导他人成分,忽略之)
假设倒入女孩的水杯的水为 x 毫升,我做的时候直接列出两个不等式,然后取较小值 * 3n(nx 是所有女的水杯的水,2nx 就是所有男的),于是就一直过不了pretest 8了。
(1)2*x ≤ 水杯最大容量(ai 最大值)
(2)nx+ 2nx ≤ w (总不能超过 w 毫升的水吧)
这样是错的啦。。。。首先(1)式就列得不对!试想,假设水杯编号为1~2n,由于前 n 小的水杯是分给女生的,这表明后 n 大的水杯是分给男生。但是男生最大只能取的水为 n+1 的容量,因为每只水杯的容量有限制嘛~~~~所以我们需要排序,找到第 n+1 位置大的水杯。我一开始还以为要用到二分做啦。。。。= =
*********************************************
正确思路是需要分情况讨论的!
将ai 排完序之后我们需要取出a[1]和a[n+1] 来讨论。也就是最少水杯容量(x)和第 n+1 大水杯容量 y 。因为最优解就是将 x 分配给每个女生,y 分配给每个男生。
注意,它们有可能构成 2 倍的关系,也可能不。所以很自然就要讨论啦。。。。2x 和 y 的大小关系!
(1) 2x ≤ y 表示可以将 x 毫升的水分给女生,2x 分给男生,反正2x 肯定不大于 y
总分配水量为:xn + 2xn = 3xn
(2) 2x > y 此时我们只能把 y/2 毫升的水分给女生(没说一定要分足 x 毫升的水给女生嘛, y/2 肯定比 x 小,不等式自己移位看呗)
总分配水量为: y/2 * n + y * n = 1.5 yn
当然,我们怎么分,总不能超过给出的 w 毫升啦,这是大前提哦,所以最后要取较小值作为答案^_^
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
using namespace std; const int maxn = 2e5 + ;
int a[maxn]; int main()
{
#ifndef ONLINE_JUDGE
freopen("in.txt", "r", stdin);
#endif // ONLINE_JUDGE int n, w;
while (scanf("%d%d", &n, &w) != EOF) { for (int i = ; i < *n; i++) {
scanf("%d", &a[i]);
}
sort(a, a+n+n);
int maxv = a[n];
int minv = a[]; double ans = 0.0;
if (minv* > maxv) {
ans = (double)maxv * n * 1.5; // maxv/2 * n + maxv * n;
} else {
ans = (double)minv * n * 3.0;
}
printf("%.9lf\n", min((w*1.0), ans));
}
return ;
}
codeforces 557B. Pasha and Tea 解题报告的更多相关文章
- Codeforces Educational Round 92 赛后解题报告(A-G)
Codeforces Educational Round 92 赛后解题报告 惨 huayucaiji 惨 A. LCM Problem 赛前:A题嘛,总归简单的咯 赛后:A题这种**题居然想了20m ...
- codeforces 476C.Dreamoon and Sums 解题报告
题目链接:http://codeforces.com/problemset/problem/476/C 题目意思:给出两个数:a 和 b,要求算出 (x/b) / (x%b) == k,其中 k 的取 ...
- Codeforces Round #382 (Div. 2) 解题报告
CF一如既往在深夜举行,我也一如既往在周三上午的C++课上进行了virtual participation.这次div2的题目除了E题都水的一塌糊涂,参赛时的E题最后也没有几个参赛者AC,排名又成为了 ...
- codeforces 507B. Amr and Pins 解题报告
题目链接:http://codeforces.com/problemset/problem/507/B 题目意思:给出圆的半径,以及圆心坐标和最终圆心要到达的坐标位置.问最少步数是多少.移动见下图.( ...
- codeforces 500B.New Year Permutation 解题报告
题目链接:http://codeforces.com/problemset/problem/500/B 题目意思:给出一个含有 n 个数的排列:p1, p2, ..., pn-1, pn.紧接着是一个 ...
- codeforces B. Xenia and Ringroad 解题报告
题目链接:http://codeforces.com/problemset/problem/339/B 题目理解不难,这句是解题的关键 In order to complete the i-th ta ...
- codeforces 462C Appleman and Toastman 解题报告
题目链接:http://codeforces.com/problemset/problem/461/A 题目意思:给出一群由 n 个数组成的集合你,依次循环执行两种操作: (1)每次Toastman得 ...
- codeforces 460A Vasya and Socks 解题报告
题目链接:http://codeforces.com/problemset/problem/460/A 题目意思:有一个人有 n 对袜子,每天早上会穿一对,然后当天的晚上就会扔掉,不过他会在 m 的倍 ...
- codeforces 567D.One-Dimensional Battle Ships 解题报告
题目链接:http://codeforces.com/problemset/problem/567/D 题目意思:给出 1 * n 的 field,编号从左至右依次为 1,2,...,n.问射 m 枪 ...
随机推荐
- Web渗透测试使用Kali Linux(一)渗透测试概要及环境部署
渗透测试是利用已经发现的漏洞,采用恶意黑客的惯用手段来尝试对漏洞进行攻击. Kali Linux是BackTrack的进化版,是Linux的衍生版本,专门开发用作渗透测试,其中提供了很多的渗透测试工具 ...
- 预处理prepareStatement是怎么防止sql注入漏洞的?
序,目前在对数据库进行操作之前,使用prepareStatement预编译,然后再根据通配符进行数据填值,是比较常见的做法,好处是提高执行效率,而且保证排除SQL注入漏洞. 一.prepareStat ...
- 开源一个动态解析protobuf的工具
好久没写博客了,主要是这一年技术没啥长进都打杂了,还有就是生活琐事越来越多,人也越来越懒了…… 之前项目中用到了Protobuf,然后测试发现这玩意不好测,总不能每次定个协议或者改下都要编译Java代 ...
- protect和private 的区别
protect和private 的区别 public 表示全局,类内部外部子类都可以访问: private表示私有的,只有本类内部可以使用: protected表示受保护的,只有本类或子类或父类中可以 ...
- mybatis 添加事物后 无法获取自增主键的问题
检查代码后没发现mapper文件设置自增主键返回的问题,后来检查到,关闭事务后,执行完是可以获取返回的主键的, 我在mysql的客户端里关闭自动提交,发现使用select last_insert_id ...
- 如何自定义wordpress登录界面的Logo
每次登录wp后台都会看到wordpress的logo,会不会有点烦呢?想不想换个新的.自己设定一个呢?那么如何自定义wordpress登录界面的Logo呢? 把代码复制到当前主题的 functions ...
- MongoDB—— 读操作 Core MongoDB Operations (CRUD)
本文主要介绍内容:从MongoDB中请求数据的不同的方法 Note:All of the examples in this document use the mongo shell interface ...
- FineUI第十五天---表格概述
Grid表格概述 跟Asp.Net的差不多. 下面介绍一些属性: ExpandUnusedSpace:此列充满所有的剩余空间,并且随着表格宽度变化而变化 DataToolTipField:用来显示 ...
- EF接触02
Ado.net Entity Framework早期称为ObjectSpace.基于Ado.net操作数据库的一组类库. 什么是ADO.NET? 基础.net平台下的操作数据库的一组Api或组建.五大 ...
- BZOJ2843——极地旅行社
1.题目大意:动态树问题,点修改,链查询.另外说明双倍经验题=bzoj1180 2.分析:lct模板题,练手的 #include <stack> #include <cstdio&g ...