1.题目

059:派
查看 提交 统计 提问
总时间限制: 1000ms 内存限制: 65536kB
描述
我的生日要到了!根据习俗,我需要将一些派分给大家。我有N个不同口味、不同大小的派。有F个朋友会来参加我的派对,每个人会拿到一块派(必须一个派的一块,不能由几个派的小块拼成;可以是一整个派)。我的朋友们都特别小气,如果有人拿到更大的一块,就会开始抱怨。因此所有人拿到的派是同样大小的(但不需要是同样形状的),虽然这样有些派会被浪费,但总比搞砸整个派对好。当然,我也要给自己留一块,而这一块也要和其他人的同样大小。请问我们每个人拿到的派最大是多少?每个派都是一个高为1,半径不等的圆柱体。输入
第一行包含两个正整数N和F,1 ≤ N, F ≤ 10 000,表示派的数量和朋友的数量。
第二行包含N个1到10000之间的整数,表示每个派的半径。
输出
输出每个人能得到的最大的派的体积,精确到小数点后三位。
样例输入
3 3
4 3 3
样例输出
25.133

2.代码

#include <iostream>
#include <algorithm>
#include <cmath>
#include<set>
#include<cstring>
#include<bits/stdc++.h>
//#include<map>
using namespace std;
double s=0;
double e=0;
int b[100001];
double a[100001];
int n,m;
const double pi=acos(-1.0);
#define EPS 0.000001
//#define pi
bool B(double x)
{int ans=0;for(int i=0;i<n;i++){ans+=int(a[i]/x);}return ans>=(m+1);
}
void solve()
{//int c=10000;while(e-s>EPS){double mid=(s+e)/2;if(B(mid)){// ans=es=mid;}else{e=mid;}}
}
int main()
{cin>>n>>m;for(int i=0;i<n;i++){cin>>b[i];a[i]=pi*b[i]*b[i];e=max(a[i],e);}solve();//cout<<fixed<<setprecision(3)<<s<<endl;printf("%.3lf\n",s);
}

3.要点分析

首先是确定是用二分来解决。我刚开始并没有想到二分,因为我不知道如何确定x,觉得一个数一个数肯定是找不完的,尤其还是浮点型。但想到二分之后,整个查找过程就变得十分清楚了。用solve进行二分操作。

其次是pi=acos(-1.0)我第一次这样使用,3.14159的表达。进行cout格式化输出的时候,可以使用fixed+setprecision,只用setprecision是表示输出值全部的位数。

最后总结一下二分用在哪里:假定一个值存在,并且查找他,用二分就很合适啦。

[C++]派(二分算法)相关推荐

  1. poj3122(二分算法)

    题意:现在有N个圆柱的pie并且高度都为1,分给F个朋友和我自己,即分给F+1个人,每个人可以分到的最大pie.注意题目中的一句话"这应该是一块馅饼,而不是几个小块,因为那看起来很乱.不过, ...

  2. HDU2675(二分算法)

    题意:根据X^(eY) == (eY)^ 求解X,使得满足该等式: (1)首先等式两边同时取对数:eYln(x)=xln(eY); (2)继续化简:eYln(x)=x(1+ln(Y)); 根据上面推导 ...

  3. 二分算法:平均值(洛谷 UVA1451)

    解析 这道题寻找平均值的max,答案明显具有单调性,所以采用二分算法 从0到1不断取中点mid作为平均值的可能点,看是否存在不短于l的数列均值>=mid不难得到以下代码: double st=0 ...

  4. vrp 节约算法 c++_滴滴技术:浅谈滴滴派单算法

    作者: 王犇 刘春阳 徐哲 来自:滴滴技术 导读:说到滴滴的派单算法,大家可能感觉到既神秘又好奇,从出租车扬召到司机在滴滴平台抢单最后到平台派单,大家今天的出行体验已经发生了翻天覆地的变化,面对着每天 ...

  5. 2021年SWPUACM暑假集训day1二分算法

    二分算法是什么 二分搜索是一种时间复杂为log2nlog_2nlog2​n的算法,可以用于单调函数求根和单调序列查询的有效算法,即使在数列长度在很大的情况下也能很快对其查询,在此同时二分算法也是一种思 ...

  6. 二分算法详解:整数二分及浮点数二分算法(Binary Search)(含算法模板)

    一.二分算法简介 当我们要从一个序列中查找一个元素的时候,最简单无脑的方法就是顺序查找法,但由于在大数据情况下爆炸的时间复杂度而舍弃. 最常见的方法是二分查找,也称折半查找(Binary Search ...

  7. 二分算法实例应用(二)

    二分算法实例应用(二) 和为给定数 (POJ 4143) Description 给出若干个整数,询问其中是否有一对数的和等于给定的数. Input 共三行: 第一行是整数n(0 < n < ...

  8. 五千字长文为你揭秘滴滴共享出行派单算法原理(干货)

    关注ITValue,看企业级最新鲜.最具价值报道! 本文作者 | 滴滴首席算法工程师 导读:说到滴滴的派单算法,大家可能感觉到既神秘又好奇,从出租车扬召到司机在滴滴平台抢单最后到平台派单,大家今天的出 ...

  9. 滴滴-----浅谈滴滴派单算法

    本文作者:王犇 滴滴 | 首席算法工程师 导读:说到滴滴的派单算法,大家可能感觉到既神秘又好奇,从出租车扬召到司机在滴滴平台抢单最后到平台派单,大家今天的出行体验已经发生了翻天覆地的变化,面对着每天数 ...

  10. 技术分享 | 浅谈滴滴派单算法

    桔妹导读:说到滴滴的派单算法,大家可能感觉到既神秘又好奇,从出租车扬召到司机在滴滴平台抢单最后到平台派单,大家今天的出行体验已经发生了翻天覆地的变化,面对着每天数千万的呼叫,滴滴的派单算法一直在持续努 ...

最新文章

  1. 用GDB调试程序(一)
  2. iOS App的几种多视图介绍
  3. 多线程:为什么wait()需要放在循环中?
  4. 一个简单的workaround - 如何使用SAP Spartacus中的private API
  5. Directory /opt/jfrog/artifactory/var has bad permissions for user id 1030
  6. 共享马扎的火爆,原来是一场营销!
  7. 微博办公李国庆:急招副总裁,提请股权激励,希望俞渝同意
  8. Spring MVC之基于java config无xml配置的web应用构建
  9. matlab中asix off_遗传算符MATLAB程序-入门必看
  10. gini系数 决策树_SKlearn中分类决策树的重要参数详解
  11. JavaScript - 理解面向对象编程
  12. html语言标记滚动字幕,网页滚动文字的制作HTML代码
  13. 在候选人同意之前不要浪费时间写 offer
  14. Excel 录制宏 - 制作工资条
  15. inv在C语言是什么函数,机械原理中的inv  函数是什么意思?
  16. 企业IT机房中使用什么灭火器?
  17. SQL常用函数及使用案例
  18. mysql 军规_MySQL数据库军规
  19. android开发 java.lang.IllegalStateException at android.media.MediaPlayer._prepare(Native Method)
  20. android path 画星星

热门文章

  1. 影像去雾软件(雾气消除)免费版
  2. 西安交通大学城市学院的计算机类专业,西安交通大学城市学院计算机系2020级专业分流会...
  3. Canvas箭头动画
  4. IMP遇到IMP-00009错误
  5. 如何修改MySQL数据库密码
  6. 迭代器Iterator的用法
  7. 【Exception】Class com.XXX1 can not access a member of class com.XXX2 with modifiers “public“
  8. ABP框架 - 实体
  9. 键盘右上角三个灯的作用
  10. Unity热更新机制