杭电1969 pie
时间:2022-07-24
本文章向大家介绍杭电1969 pie,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
题意:就是一群有洁癖并且斤斤计较的朋友来做客,你有n块蛋糕,每块有不同的半径r,然后你要给他们包括你自己分到体积相等的蛋糕,并且不能是两块或者以上的蛋糕拼接而成的!
思路:记得有个牛客训练营1有个二分题,但是当时都没看出来,所以想着在复习一下二分,当初理解也不深刻。
回归正题,那么怎个分蛋糕呢?!!表面看上去好像无从下手,当初刚接触编程的我也是如此,现在竟然能很顺畅的一发AC了,说明能力还是有提升的!
我们可以这样想,分蛋糕的话,每块输入时我们对其处理,等到r的平方并且找到最大值!因为蛋糕要分的话,体积肯定是要位于0到最大值之间的,然后我们得到这个区间后,我们可以不停的将其缩小找到符合的值,条件当然是满足m+1个人了!!如果最后分的蛋糕的数量是大于m+1的那么就说明体积小了,我们要把蛋糕在分的大一些!否则说明体积大了,分的小一点!那么在满足这个条件的情况下,在精度达到一定条件即可认为得到符合体积(1e-5好像就后够了)
AC代码如下
#include<bits/stdc++.h>
#define PI acos(-1.0)
#define eps 1e-7
#define inf 0x3f3f3f3f
using namespace std;
double a[10004];
double mid;
int num;
int n,m;
double maxn;
double minn;
int main(){
int t;
cin>>t;
while(t--){
cin>>n>>m;
m = m+1;
maxn = -1;
for(int i=0;i<n;i++){
cin>>a[i];
a[i] = a[i]*a[i];
if(a[i]>maxn) maxn = a[i];
}
minn = 0;
while(maxn - minn > eps){
mid = (maxn+minn)/2;
num = 0;
for(int i=0;i<n;i++){
num += (int)(a[i]/mid);
}
if(num >= m) minn = mid;
else maxn = mid;
}
printf("%.4lfn",mid*PI);
}
return 0;
}
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Nginx相关配置与操作
- Python 技术篇-全局与当前socket超时连接时间设置方法实例演示,查看socket超时连接时间
- 给 JDK 报了一个 P4 的 Bug,结果居然……
- Python 套接字-判断socket服务端有没有关闭的方法实例演示,查看socket运行状态
- docker安装logstash
- Rook Operator 源码分析(1) - osd 启动的流程
- Python 技术篇-利用pyqt5库监听剪切板变动,clipboard.dataChanged.connect()剪切板监听
- 关于MySQL server has gone away
- PyQt5 技术篇-在clipboard.dataChanged.connect()里如何写入剪切板示例演示,pyqt5监听剪切板变动并写入剪切板内容
- 去除WordPress链接中出现的index.php
- MySQL 语法问题:You can‘t specify target table ‘xxx‘ for update in FROM clause. 原因及解决方法
- 配置 prometheus-operator 报警规则
- SQL语句查询出的数据进行字符串拼接,oracle批量删除数据库用户实例演示
- prometheus-operator 监控 k8s 外部集群
- Python+selenium 自动化-操作已启用的chrome浏览器实例演示,chrome启用调试端口方法