题目分析:

  1. 由于每瓶药水体积相同,要求体积最大等同于瓶数最多。
  2. 要求浓度不大于W%,所以我们需要从浓度较低的药水开始添加,直到浓度刚好不大于W%。
  3. 一瓶浓度为20%的药水和一瓶浓度为30%的体积相同的药水混合,浓度为25% = (20%+30%)/2。
  4. 体积相同则混合后浓度与体积无关,3瓶以上同理。

解题思路:

  1. 将药水浓度a[]排序,优先添加低浓度药水。
  2. 当添加了第1~i瓶药水时,药水浓度为P/i,(P = a[1]~a[i]之和)。
  3. 如果当前药水浓度恰好超过了要求浓度W,则退回一步,i–。此时浓度正好不大于W。
  4. 输出体积i*v和浓度P/i。

Code:

#include <bits\stdc++.h>
using namespace std;
typedef long long ll;
int a[105];
int main(){ios::sync_with_stdio(false);int t;cin >> t;int n,v,m;while(t--){cin >> n >> v >> m;for(int i = 1;i <= n; ++i){cin >> a[i];}//按浓度排序所有药水,从浓度较低的开始添加 sort(a+1,a+1+n);int i;a[0] = 0; //添加第1~i瓶药水,当前药水浓度为a[1]加到a[n]除以i for(i = 1;i <= n; ++i){//将浓度加起来 a[i] += a[i-1];//如果浓度大于要求浓度,则撤回当前这瓶药水// 实际表达式为a[i]/i > m//a[i]不为浮点型除法会丢失精度,故用以下表达式 if(a[i] > m*i) break;}i--; //撤回一步,保证浓度小于等于要求浓度m if(i == 0){printf("0 0.00\n");}else{printf("%d %.2lf\n" , i*v,1.0*a[i]/i/100);}} return 0;
}

【HDU 2507】【ACM-ICPC算法基础训练教程 题1-6】迷瘴(贪心)相关推荐

  1. 数据结构与算法基础--错题集

    数据结构与算法的定义 数据结构是一门研究非数值计算的程序设计问题中的操作对象以及它们之间的关系和运算的学科. 算法是:解决问题的有限运算序列 算法分析的两个主要方面是:空间复杂度和时间复杂度 算法分析 ...

  2. 一道ACM剑气算法的编程题

    无剑无我 Problem Description: 北宋末年,奸臣当道,宦官掌权,外侮日亟,辽军再犯.时下战火连连,烽烟四起,哀鸿遍野,民不聊生,又有众多能人异士群起而反,天下志士云集响应,景粮影从. ...

  3. 左神数据结构与算法(基础)——表、树、图、贪心、递归

    2.1 哈希表.有序表.单链表和双链表 ①哈希表的简单介绍 1>哈希表在使用层面可以理解为一种集合结构. 2>如果只有key,没有伴随数据value,可以使用HashSet结构 3> ...

  4. hdu-2570 迷瘴(贪心水题)

    迷瘴 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission ...

  5. ACM/ICPC 集:

    ACM/ICPC在线题库集锦: 网址:http://acm.uva.es/ 简称: uva 全称: Valladolid Programming Contest Site 所在国:西班牙 提交方式:w ...

  6. 2016 ACM / ICPC Asia dalian Regional Contest 题解(11 / 11)【每日亿题2021 / 2 / 17】

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 A .(2017 ACM ICPC dalian H)To begin or not to be ...

  7. 2022牛客寒假算法基础集训营3 签到题7题(附基础集训营1-3签到题总结)

    1.A-智乃的Hello XXXX 签到 #include<bits/stdc++.h> using namespace std; int main(){cout<<" ...

  8. 【C/C++】蓝桥杯算法必刷题(三)目标ICPC铜/蓝桥杯国一

    目录 前言 题解文章汇总 题目传送门:算法必刷题(三) 该题单中第一类考点:二进制 1018.有趣的二进制 1019.[NOIP2006]数列 1020.只能吃土豆的牛牛 该题单中第二类考点:思维 1 ...

  9. 【C/C++】蓝桥杯算法必刷题(一)目标ICPC铜/蓝桥杯国一

    目录 前言 该题单中第一类考点:输入输出 1001.这是一道签到题 1005.乘法表 1006.KiKi学程序设计基础 1007.疫情死亡率 该题单中第二类考点:思维题 1002.排列式 1018.开 ...

最新文章

  1. 只需4秒,这个算法就能鉴别你的LV是真是假
  2. Oracle Varchar2 字段转成Clob字段
  3. android_ExpandableListView 下拉列表使用
  4. JQuery 总结(1) 选择器的使用
  5. 顶级极客技术挑战赛,你敢来挑战吗?| 大神登峰造极
  6. mahout in Action2.2-给用户推荐图书(2)-分析对用户推荐书目的结果
  7. 一起学JUCE之HashMap
  8. 如何仅凭 README 就名列 GitHub No.1 并收获上万 Star?
  9. 英语总结系列(六):激情燃烧的岁月
  10. 社会我张哥,人狠话不多。
  11. 复合类型_22.scala的复合类型
  12. AutoCad2012安装与使用
  13. matlab神经网络流程图,BP神经网络算法步骤.doc
  14. 宠物商店业务逻辑关系模型图
  15. 眼睛里10年的“肉芽”长大了,这究竟是怎么回事?
  16. 迁移过程中出现报错:无法解析的成员访问表达式[USERENV]
  17. 俺老孙画个圈-板框与安装孔-PCB系列教程1-10
  18. 昨天的双十一你又剁手了吗?
  19. 华为手机自带邮箱如何添加新浪邮箱账号
  20. 驾考一点通维语版_【驾考宝典下载】2020官方最新_电脑版手机版维语版 - 驾考宝典...

热门文章

  1. 冒泡排序 小白学demo_day2
  2. python37安装opencv41_Vs2019+opencv4.1.0+python3.7,包安装,vs2019opencv410python37,程序包
  3. Java黑皮书课后题第5章:*5.51(最长的共同前缀)编写一个程序,提示用户输入两个字符串,显示两个字符串最长的共同前缀
  4. Java黑皮书课后题第5章:**5.22(金融应用:显示分期还贷时间表)对于给定的贷款额,月支付额包括偿还本金及利息。编写一个程序,让用户输入贷款总额年限利率,然后显示分期还贷时间表
  5. 计算机入会大会新生发言稿,新生大会发言稿(精选3篇)
  6. java web中align命令_java web开发
  7. caffe学习(1) ubunu 16.04+caffe+cuda8.0+opencv3.1安装
  8. Jenkins Pipeline高级用法-ShareLibrary
  9. Android 事件分发机制
  10. const 内联 枚举 宏