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 枪 ...
随机推荐
- vc++6.0各种报错合集(附:VC++6.0调出打印窗口的方法)
背景: 由于VC++6.0对于现在的我来说,只是一个工具,暂时没有太多的时间分配到这块去深究它,由于不明其原理,因此也只是在此把错误积累下来,以备下次相同错误出现时能快速排除,节省时间. 正文 一.出 ...
- 安装 vue.js和第一个hello world
一.在自己的项目文件中使用npm下载vue npm install vue 二.在文件中引入vue.js 三.第一个hello world 注:scritpt代码必须写在html代码的下面
- Ubuntu 14 如何解压 .zip、.rar 文件?
.zip 和 .rar 是Windows下常用的压缩文件,在Ubuntu中如何解压? [解压.zip文件] Ubuntu中貌似已经安装了unzip软件,解压命令如下: unzip ./FileName ...
- 给Storyboard设置初始页面(Initial Controller)
原文:https://developer.apple.com/library/ios/recipes/xcode_help-IB_storyboard/Chapters/SetInitialContr ...
- 【python网络编程】新浪爬虫:关键词搜索爬取微博数据
上学期参加了一个大数据比赛,需要抓取大量数据,于是我从新浪微博下手,本来准备使用新浪的API的,无奈新浪并没有开放关键字搜索的API,所以只能用爬虫来获取了.幸运的是,新浪提供了一个高级搜索功能,为我 ...
- python 中文编码问题
1.文件首#coding=utf-8 作用:为了把文件内容编码python所识别的utf-8,若不指定编码格式,则会出现以下错误: 2. 文件储存指定编码为utf-8 作用:将文件编码成utf-8.如 ...
- javascript基础07
javascript基础07 1.节点 元素.childNodes : 属性 只读 属性 子节点列表集合 元素.childNodes 只包含子节点,不包含孙节点 DOM节点的类型有很多种,w3c标准有 ...
- ext 对齐
layout : { type : 'hbox', pack : 'end' } buttonAlign:'center', //按钮居中 pack : String Controls how t ...
- phpcms不显示验证码
只需修改./caches/configs/system.php即可 1.本地域名如果是 http://localhost 如果所有的文件都在根目录下(例如apache下的htdocs或www),此时, ...
- Iterator中hasNext(), next() 和ResultSet结果集的next方法的区别
接口 Iterator专门的迭代输出接口,将元素一个个进行判断,用hasNext() 判断是否有值,用next()方法把元素取出.hasNext() 如果仍有元素可以迭代,则返回 true.next( ...