POJ-3122.Pie(二分法最大化平均值)
二分法的主题思路就是逐步逼近,所以这道题的思路自然一目了然,做题思路也是...
本题大意:题主过生日,它买了N块半径为R[ i ],高为1的圆柱形蛋糕,现在他要将这N块蛋糕等分给F + 1个人,为了好看分出来的每块蛋糕必须是从一整块上分割下来的,体积一样形状不限。
本题思路:那就是求那个最大的平均值啦,二分,找出最大值和最小值,二分逼近判断,就ok。
这题卡精度的一批,double二分,老套路二分100次精度异常高,什么都不用管直接AC,我一开始也wa了几次,原因时因为check函数内部实现,我就把check里的除法向下取整改为了加法,就wa,不明白,懵懂无知,有大佬指点一下?
参考代码:
#include <cstdio>
#include <cmath>
#include <algorithm>
#define mid ((double)(l + r) / 2)
using namespace std; const double pi = acos(-1.0);
const int maxn = + ;
int N, F;
int R[maxn];
double V[maxn]; bool cmp(const double &a, const double &b) {
return a > b;
} double Getarea(int r) {
return (double)(pi * r * r);
} // bool check(double x) {
// int num = 0;
// for(int i = 0; i < N; i ++) {
// double cap = V[i];
// while(cap >= x) {
// num ++;
// cap -= x;
// }
// if(num >= F + 1) return true;
// }
// return num >= F + 1;
// } bool check(double x) {
int sum = ;
for(int i = ; i < N; i ++)
sum += (int)(V[i] / x);
return sum >= F + ;
} int main() {
int t;
double Max = ;
scanf("%d", &t);
while(t --) {
scanf("%d %d", &N, &F);
for(int i = ; i < N; i ++) {
scanf("%d", &R[i]);
V[i] = Getarea(R[i]);
Max = max(Max, V[i]);
}
double l = , r = double(Max);
for(int i = ; i < ; i ++) {
if(check(mid)) l = mid;
else r = mid;
}
printf("%.4f\n", l);
}
return ;
}
POJ-3122.Pie(二分法最大化平均值)的更多相关文章
- poj 3111 K Best 最大化平均值 二分思想
poj 3111 K Best 最大化平均值 二分思想 题目链接: http://poj.org/problem?id=3111 思路: 挑战程序竞赛书上讲的很好,下面的解释也基本来源于此书 设定条件 ...
- POJ 3111 K Best(最大化平均值)
题目链接:click here~~ [题目大意]有n个物品的重量和价值各自是Wi和Vi.从中选出K个物品使得单位重量的价值最大,输出物品的编号 [解题思路]:最大化平均值的经典.參见click her ...
- POJ 3111 K Best 最大化平均值 [二分]
1.题意:给一共N个物品,每个物品有重量W,价值V,要你选出K个出来,使得他们的平均单位重量的价值最高 2.分析:题意为最大化平均值问题,由于每个物品的重量不同所以无法直接按单位价值贪心,但是目标值有 ...
- POJ - 3122 Pie(二分)
http://poj.org/problem?id=3122 题意 主人过生日,m个人来庆生,有n块派,m+1个人(还有主人自己)分,问每个人分到的最大体积的派是多大,PS每 个人所分的派必须是在同一 ...
- POJ 3122 Pie 二分枚举
题目:http://poj.org/problem?id=3122 这个题就好多了,没有恶心的精度问题,所以1A了.. #include <stdio.h> #include <ma ...
- POJ 3122 Pie
题目大意: 给出n个pie的直径,有f+1个人,如果给每人分的大小相同(形状可以不同),每个人可以分多少.要求是分出来的每一份必须出自同一个pie,也就是说当pie大小为3,2,1,只能分出两个大小为 ...
- POJ 3122 Pie(二分+贪心)
Pie Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 22684 Accepted: 7121 Special Ju ...
- POJ 3122 Pie (贪心+二分)
My birthday is coming up and traditionally I'm serving pie. Not just one pie, no, I have a number N ...
- POJ 3122 Pie【二分答案】
<题目链接> 题目大意: 将n个半径不一但是高度为1的蛋糕分给 F+1个人,每个人分得蛋糕的体积应当相同,并且需要注意的是,每个人分得的整块蛋糕都只能从一个蛋糕上切下来,而不是从几个蛋糕上 ...
随机推荐
- HTML与CSS中的颜色与单位个人分享
颜色与单位 Web安全色有216中其中色彩有210中,非色彩6中 前景色与背景色 前景色就是设置字体的颜色 背景色就是为指定元素设置背景色 - 浏览器默认背景色的颜色为透明色 颜色的命名 1.使用单词 ...
- webpack中require.context 用法
1.require.context(directory, useSubdirectories = false, regExp = /^\.\//) Examples: require.context( ...
- React 之React.createContext
使用Context,可以跨越组件进行数据传递 import React from 'react'; import ReactDOM from 'react-dom'; const ThemeConte ...
- ipcloud上传裁切图片
主页: <!doctype html> <html> <head> <meta charset="utf-8"> <meta ...
- new Date(str)返回 Invalid date问题
var date=new Date($("input[name='mettingTime']").val().replace(/-/g, "/")); var ...
- 【Java】JavaMail使用网易企业邮箱发邮件
邮件发送器 /** * 邮件发送器 * * @author Zebe */ public class MailSender implements Runnable { /** * 收件人 */ pri ...
- Leetcode 7. Reverse Integer(水)
7. Reverse Integer Easy Given a 32-bit signed integer, reverse digits of an integer. Example 1: Inpu ...
- BFC、IFC、GFC和FFC
基本概念 Box 是 CSS 布局的对象和基本单位, 直观点来说,就是一个页面是由很多个Box 组成的.元素的类型和 display 属性,决定了这个 Box 的类型. 不同类型的 Box, 会参与不 ...
- Mybatis,模糊查询语句,以及传参数的正确写法
不多说直接上代码! 接口: public interface CommodityMapper { int deleteByPrimaryKey(Integer productId); int inse ...
- JavaVM & JNIEnv
JNIEnv提供了大多数的JNI函数.你的本地方法都会接收JNIEnv作为第一个参数.JNIEnv用于本地线程存储.因此,你不能在线程间共享同一个JNIEnv.如果一个代码段没有其他方式获取它自身线程 ...