Codevs 喝咖啡
来源:互联网 发布:mac如何设置关机时间 编辑:程序博客网 时间:2024/04/27 01:14
点击就送屠龙宝刀
题目描述 Description
东海龙王邀请葫芦娃喝咖啡(多么奇葩的背景啊!)龙王知道葫芦娃喜欢葫芦娃喜欢特定浓度的咖啡(咖啡浓度为0到1直接的小数,不超过9位),龙王想知道葫芦娃所想要的咖啡能否被调出(东海地大物博,咖啡无限供应)……
嘿!水娃……。
输入描述 Input Description
第一行一个数N表示龙王有的咖啡种数
接下来N行表示龙王的咖啡具体浓度
接下来一行一个数M表示葫芦娃的要求数
接下来M行表示葫芦娃的具体要求
输出描述 Output Description
共M行,如果葫芦娃的那个要求可以被满足则输出YES否则输出NO
样例输入 Sample Input
4
0.65
1
0.8
0.6
3
0.4
0.75
0.7
样例输出 Sample Output
NO
YES
YES
数据范围及提示 Data Size & Hint
P.S.
浓度为0.75的咖啡可以用两杯浓度为0.8的咖啡与一杯浓度为0.65的咖啡调成
浓度为0.7的咖啡可以用一杯浓度为0.8的咖啡与一杯浓度为0.6的咖啡调成
N,M<100,000,000
咖啡浓度最长保留9位
好惊悚的白银题是不是?
However marshtomp would see everything
这题坑惨了好多同学呢QAQ
这道题233333不说什么了我们来讨论解法。。对于大触,他们看到浓度道小数点后9位就开始了高精度除法。。。然而并没有什么卵用因为你有可能除着除着存在精度问题而且可能会炸。。。。
所以我们继续看题。我们发现:对于两个不同的浓度(假设为a,b),如果把他们混合到一起,那么我们就会得到(a+b)/2的浓度的咖啡。那么问题来了,这个条件有什么用呢?慢慢分析。对于每次询问,我们有龙王的咖啡浓度的最大值和最小值,那么我们能配除的浓度是什么呢?显然是大于等于最小值小于等于最大值的。因为无论最小值加上哪一个除以二答案都是大于等于最小值的。这样我们就得到了浓度的下界,同理可以得出浓度的上界。那么在这个区间内,我们可以假设一个浓度i。如果i可以用a,b两种浓度混合得到,那么a,b一定在区间内有解。同理可以推出来a,b的生成。那么继续推我们得到了什么呢?没错就是给定条件可以产生一组浓度a,b,且(a+b)/2=i。这样我们就得到了答案。因为i是a,b区间内任意值,那么我们就知道了对于给定条件范围内的咖啡浓度都能得到,因为没有要求输出如何混合,所以只需要判断询问是否处于这个区间内就可以了。
#include<iostream>using namespace std;int main(){ int n,m; cin>>n; double max=0,min=1,x; for(int i=0;i<n;i++) { cin>>x; if(max<x)max=x; if(min>x)min=x; } cin>>m; for(int i=0;i<m;i++) { cin>>x; if(max>x&&min<x) cout<<"YES"<<endl; else cout<<"NO"<<endl; } return 0;}
- Codevs 喝咖啡
- 重新开始喝咖啡
- 咖啡喝多了
- 喝咖啡的礼仪
- 重喝咖啡
- 不得不喝的咖啡
- 喝咖啡也能醉
- 喝咖啡的好处
- 喝茶还是喝咖啡?
- 喝咖啡的好处
- 喝咖啡好吗?(一)
- 喝咖啡好吗?(二)
- 喝咖啡好吗?(三)
- 各国咖啡的喝法
- 早上喝咖啡的感悟
- 喝咖啡的三篇文章
- 【面试-概率】喝茶,喝咖啡
- 缓解疲劳,闻咖啡比喝咖啡更好
- Java LinkedList详解源码研究
- Java正则表达式:Pattern类和Matcher类
- WP开发 - 引入dll出现“无法向项目中添加对较高版本或不兼容程序集的引用”
- 2015-2016 ACM-ICPC, NEERC, Southern Subregional Contest A Email Aliases
- POJ2387--Til the Cows Come Home(dijkstra算法)
- Codevs 喝咖啡
- 给Android程序员的一些面试建议
- Object类有哪些公用方法?
- Leetcode107: Search a 2D Matrix II
- 处理对象的多种状态及其相互转换——状态模式(六)
- 函数声明与函数表达式
- LogCat5个级别的作用
- RecyclerView 滑动检测 (上滑 up)(下滑 down)(顶部 top)(底部 bottom)
- iOS多线程编程GCD介绍和使用