洛谷 P1570 KC喝咖啡【二分答案/最大化平均值模板】
题目描述
话说KC和SH在福州的时候常常跑去85°C喝咖啡或者其他的一些什么东西。
这天,KC想要喝一杯咖啡,服务员告诉他,现在有n种调料,这杯咖啡只可以加入其中的m种(当然KC一定会加入m种,不会加入少于m种的调料),根据加入的调料不同,制成这杯咖啡要用的时间也不同,得到的咖啡的美味度也不同。
KC在得知所有的n种调料后,作为曾经的化竞之神的他,马上就知道了所有调料消耗的时间ci以及调料的美味度vi。由于KC急着回去刷(play)题(games),所以他想尽快喝到这杯咖啡,但他又想喝到美味的咖啡,所以他想出了一个办法,他要喝到(Σvi)/(Σci)最大的咖啡,也就是单位时间的美味度最大的咖啡。
现在,KC把调料信息告诉了SH,要SH帮他算出喝到的咖啡的(Σvi)/(Σci),但SH不想帮KC算这东西,于是KC就只能拜托你来算了。
注释:Σ表示求和,所以(Σvi)/(Σci)表示 美味度的总和 除以 消耗时间的总和。
输入输出格式
输入格式:
输入数据第一行为一个整数n,m,表示调料种数和能加入的调料数。接下来2行,每行为n个数,第一行第i个整数表示调料i的美味度vi,第二行第i个整数表示调料i消耗的时间ci。
输出格式:
一个整数T,表示KC喝的咖啡的最大(Σvi)/(Σci),保留三位小数。
输入输出样例
输入样例#1:
3 2
1 2 3
3 2 1
输出样例#1:
1.667
(选2号和3号调料,(2+3)/(2+1)=1.667)
说明
数据范围:
20%:1<=n<=5。
50%:1<=n<=10。
80%:1<=n<=50。
100%:1<=n<=200,1<=m<=n,1<=c[i],v[i]<=10000。
保证答案不超过1000。
#include<bits/stdc++.h>
const double eps = 1e-8;
const int maxn = 1e6+5;
#define inf 0x3f3f3f3f
#define ll long long
using namespace std;
/*
有n个物品的重量和价值分别是wi和vi
从中选出k个物品使得单位重量价值最大
*/
int n,k;
int w[maxn],v[maxn];
double y[maxn];
bool cmp(int a,int b)
{
return a>b;
}
bool check(double x)
{
for(int i=0;i<n;i++)
y[i] = v[i] - w[i] * x;
sort(y,y+n);
double sum = 0;
for(int i=0; i<k; i++)
sum += y[n-i-1];
return sum>=0;
}
void solve()
{
double l = 0, r =inf, mid;
while(r-l>eps)
{
mid = (l+r)/2;
if(check(mid))
l=mid;
else r=mid;
}
printf("%.3f\n",r);
}
int main()
{
while(~scanf("%d%d",&n,&k))
{
for(int i=0;i<n;i++)
cin>>v[i];
for(int i=0;i<n;i++)
cin>>w[i];
solve();
}
}
洛谷 P1570 KC喝咖啡【二分答案/最大化平均值模板】的更多相关文章
- [洛谷P1750]KC喝咖啡
题目大意:给你n个物品,每个物品有一个价值$v_i$和一个时间$t_i$,要你取m个物品,使得他们的美味度($\frac{\sum v_i}{\sum t_i}$)最大,求这个美味度. 解题思路:由于 ...
- [CodePlus 2017 11月赛&洛谷P4058]木材 题解(二分答案)
[CodePlus 2017 11月赛&洛谷P4058]木材 Description 有 n棵树,初始时每棵树的高度为 Hi ,第 i棵树每月都会长高 Ai.现在有个木料长度总量为 S的订单, ...
- 洛谷P4589 [TJOI2018]智力竞赛(二分答案 二分图匹配)
题意 题目链接 给出一个带权有向图,选出n + 1n+1条链,问能否全部点覆盖,如果不能,问不能覆盖的点权最小值最大是多少 Sol TJOI怎么净出板子题 二分答案之后直接二分图匹配check一下. ...
- 洛谷 P1824 进击的奶牛 【二分答案】(求最大的最小值)
题目链接:https://www.luogu.org/problemnew/show/P1824 题目描述 Farmer John建造了一个有N(2<=N<=100,000)个隔间的牛棚, ...
- 洛谷P3964 [TJOI2013]松鼠聚会 [二分答案,前缀和,切比雪夫距离]
题目传送门 松鼠聚会 题目描述 草原上住着一群小松鼠,每个小松鼠都有一个家.时间长了,大家觉得应该聚一聚.但是草原非常大,松鼠们都很头疼应该在谁家聚会才最合理. 每个小松鼠的家可以用一个点x,y表示, ...
- 洛谷P3576 [POI2014]MRO-Ant colony [二分答案,树形DP]
题目传送门 MRO-Ant colony 题目描述 The ants are scavenging an abandoned ant hill in search of food. The ant h ...
- 洛谷P1462通往奥格瑞玛的道路——二分答案最短路
题目:https://www.luogu.org/problemnew/show/P1462 最大值最小问题,二分答案. 代码如下: #include<iostream> #include ...
- 洛谷3933 Chtholly Nota Seniorious 二分答案+贪心
题目链接 题意 给你一个N*M的矩阵 (N,M <=2000) 把他分成两部分 使两部分的极差较大的一个最小 求这个最小值.然后分矩阵的要求是:每个部分内部的方块之间,可以通过上下左右相互到 ...
- 洛谷P1991无线通讯网[kruskal | 二分答案 并查集]
题目描述 国防部计划用无线网络连接若干个边防哨所.2 种不同的通讯技术用来搭建无线网络: 每个边防哨所都要配备无线电收发器:有一些哨所还可以增配卫星电话. 任意两个配备了一条卫星电话线路的哨所(两边都 ...
随机推荐
- Python 日期时间相关
#calendar日历模块 import calendar #calendar() 获取一年日历 result = calendar.calendar(2018,w = 2,l = 1,c = 6,m ...
- [Leetcode] Roman to integer 罗马数字转成整数
Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range from 1 t ...
- linux管理(二)---网络使用情况的监控
我们经常在监控服务器或者排查程序性能瓶颈时需要知道 网络带宽的使用情况,看看带宽是不是瓶颈. linux系统中监控网络的工具和命令很多. 但其实主要分2种,一种是实时监控带宽情况(速度如何),一种是 ...
- Ubuntu下安装LNMP之nginx的安装
Nginx 最初是作为一个 Web 服务器创建的,用于解决 C10k 的问题.作为一个 Web 服务器,它可以以惊人的速度为您的数据服务.但 Nginx 不仅仅是一个 Web 服务器,你还可以将其用作 ...
- Clevo P950笔记本加装4G模块
要补全的电路部分如下(原理图见附件) 这里经过尝试,发现左上角R217,R218不用接,3G_POWER部分不接(包括MTS3572G6.UK3018及电阻电容,3G_PWR_EN实测是3.3V,驱动 ...
- POJ - 1017 贪心训练
Packets Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 59725 Accepted: 20273 Descrip ...
- java过滤器和监听器详解
过滤器 1.Filter工作原理(执行流程) 当客户端发出Web资源的请求时,Web服务器根据应用程序配置文件设置的过滤规则进行检查,若客户请求满足过滤规则,则对客户请求/响应进行拦截,对请求头和请求 ...
- i=i+1与i+=1的区别及效率(Java)
原博客地址 在做个java优化的PPT时,看到了i=i+1与i+=1的区别,在这之前还真没想到那么细. 1.x=x+1,x+=1及x++的效率哪个最高?为什么? x=x+1最低,因为它的执行如下. ( ...
- 我之理解---计时器setTimeout 和clearTimeout
今天在写个图片切换的问题 有动画滞后的问题,才动手去查setTimeout 和clearTimeout.之前写的图片播放器也有类似的问题,有自动start按钮 和stop按钮, 其他都正常,问题出在每 ...
- oracle12c创建用户等问题
一:前言 这几天我重新装了下电脑,然后自己有试着去装了下oracle11g,结果还是失败了然后我自己又去下载了最新的oracle12c,oracle12c中有两个用户sys和system,scott已 ...