以下三道都是经典二分,道理都差不多,代码就贴在一起了。

POJ 3122    POJ 3258    POJ 3273

POJ 3122:

#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
#define PI 3.14159265359 //ÓÃ3.1415926»áWA¡£¡£¡£
double pie[10005]; int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int n,f,r;
double maxp=0.0;
scanf("%d%d",&n,&f);
f++;
for(int i=0;i<n;i++)
{
scanf("%d",&r);
pie[i]=r*r*PI;
maxp=max(maxp,pie[i]);
}
double left=0.0,right=maxp;
while(left+1e-6<right)
{
double mid=(left+right)/2.0;
int sum=0;
for(int i=0;i<n;i++)
sum+=floor(pie[i]/mid);
if(sum>=f)
left=mid;
else right=mid;
}
printf("%.4lf\n",left);
}
return 0;
}

POJ 3258:

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std; int main()
{
int L,n,m,d[50005];
while(~scanf("%d%d%d",&L,&n,&m))
{
int l=L,r=L,mid;
d[0]=0; d[n+1]=L;
for(int i=1;i<=n;i++)
scanf("%d",&d[i]);
sort(d,d+n+2);
for(int i=1;i<=n+1;i++)
l=min(l,d[i]-d[i-1]); while(l<r)
{
mid=(l+r)>>1;
int cnt=0,sum=0;
for(int i=1;i<=n+1;i++)
{
if((sum+=(d[i]-d[i-1]))<=mid) //注意加括号
cnt++;
else sum=0;
}
if(cnt>m)
r=mid;
else l=mid+1;
}
printf("%d\n",l);
}
return 0;
}

POJ 3273:

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std; int main()
{
int n,m,pay[100005];
while(~scanf("%d%d",&n,&m))
{
int l=0,r=0;
for(int i=0;i<n;i++)
{
scanf("%d",&pay[i]);
l=max(l,pay[i]);
r+=pay[i];
}
while(l<r)
{
int cnt=0,sum=0;
int mid=(l+r)/2;
for(int i=0;i<n;i++)
{
sum+=pay[i];
if(sum>mid)
{
cnt++;
sum=pay[i];
}
}
if(cnt<m)
r=mid;
else l=mid+1;
}
printf("%d\n",l);
}
return 0;
}

POJ 3122 & 3258 & 3273 #二分的更多相关文章

  1. 【POJ 3122】 Pie (二分+贪心)

    id=3122">[POJ 3122] Pie 分f个派给n+1(n个朋友和自己)个人 要求每一个人分相同面积 但不能分到超过一个派 即最多把一整个派给某个人 问能平均分的最大面积 二 ...

  2. POJ - 3122 Pie(二分)

    http://poj.org/problem?id=3122 题意 主人过生日,m个人来庆生,有n块派,m+1个人(还有主人自己)分,问每个人分到的最大体积的派是多大,PS每 个人所分的派必须是在同一 ...

  3. POJ 2456 3258 3273 3104 3045(二分搜索-最大化最小值)

    POJ 2456 题意 农夫约翰有N间牛舍排在一条直线上,第i号牛舍在xi的位置,其中有C头牛对牛舍不满意,因此经常相互攻击.需要将这C头牛放在离其他牛尽可能远的牛舍,也就是求最大化最近两头牛之间的距 ...

  4. POJ 3122 Pie【二分答案】

    <题目链接> 题目大意: 将n个半径不一但是高度为1的蛋糕分给 F+1个人,每个人分得蛋糕的体积应当相同,并且需要注意的是,每个人分得的整块蛋糕都只能从一个蛋糕上切下来,而不是从几个蛋糕上 ...

  5. POJ 3122 Pie(二分+贪心)

    Pie Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 22684   Accepted: 7121   Special Ju ...

  6. poj 3122 (二分查找)

    链接:http://poj.org/problem?id=3122 Pie Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 1 ...

  7. poj 3258 3273

    poj3258 题目  (最大化最小值)(最小值最大化) 题意:牛要到河对岸,在与河岸垂直的一条线上,河中有N块石头,给定河岸宽度L,以及每一块石头离牛所在河岸的距离,现在去掉M块石头,要求去掉M块石 ...

  8. E - River Hopscotch POJ - 3258(二分)

    E - River Hopscotch POJ - 3258 Every year the cows hold an event featuring a peculiar version of hop ...

  9. POJ 3122 Pie 二分枚举

    题目:http://poj.org/problem?id=3122 这个题就好多了,没有恶心的精度问题,所以1A了.. #include <stdio.h> #include <ma ...

随机推荐

  1. overflow属性及其在ios下卡顿问题解决

    overflow属性:http://www.w3school.com.cn/cssref/pr_pos_overflow.asp overflow:scroll/auto;在手机页面滑动不流畅问题: ...

  2. QGIS

    project(GisFreeMap) set(CMAKE_BUILD_TYPE Debug) find_package(Qt4 REQUIRED QtCore QtGui QtXml) includ ...

  3. 循序渐进看Java web日志跟踪(2)-Java日志API认识

    接触过Java的朋友应该都会知道,java的开源框架百花齐放,实现同样的功能,总能找到几个强大的开源框架来进行选择.在日志方面,Java同样不逊色.除了JDK本身自带的简单的日志工具,java还有如l ...

  4. JavaScript简单的一些....

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. cdh 安装记录

    安装文件准备 CDH 下载地址:http://archive.cloudera.com/cdh5/parcels/latest/ 下载操作系统对应的版本: 1.CDH-5.3.0-1.cdh5.3.0 ...

  6. java知识点梳理

    网络搜索结果,出处不详,仅供参考 对于刚刚接触Java的人,java基础知识技术点繁多,那么gkstk小编为大家汇总最全java知识点如下,仅供大家参考学习! 1. JVM相关(包括了各个版本的特性) ...

  7. 关于数据汇总方面返回Json数据的小小心得

    在一开始的开发中,计算好相关数据,然后通过 1.拼串 2.实例化Dictory对象再通过JavaScriptSerializer转换为json. 其中,2只适合于二维数据.1适合多维数据,但拼串比较费 ...

  8. Xcode使用小结2

    刷新时间慢的时候用timer定时器 以下内容为借用,作者:FlyElephant出处:http://www.cnblogs.com/xiaofeixiang iOS开发-NSOperation与GCD ...

  9. Egret 学习之简介,环境搭建及命令行语法 (一)

    1,简介 1)egret是一个开源免费的游戏框架,它使用TypeScript脚本语言进行开发:当游戏完成最终的打包后,可以将程序转换为h5游戏,实现跨平台性:它基于BSD(Berkly Softwar ...

  10. <蛇形填数>--算法竞赛 入门经典(第2版)- 3.1 数组 程序3-3 蛇形填数

     蛇形填数: 在n×n方阵里填入1,2,....,n×n,要求填成蛇形.例如,n = 4 时方阵为:    10  11  12  1   9  16  13  2 8  15  14  3 7   ...