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

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;
}

最新文章

  1. MVC 验证码实现( 简易版)
  2. linux系统版本查看命令
  3. jvm 数据区划分学习
  4. flask中的request.form对象方法
  5. Bootstrap迁移系列 - Navbar
  6. 使用Python编程语言连接MySQL数据库代码
  7. IIS 返回 405 - 不允许用于访问此页的 HTTP 谓词。终极解决办法!!!!
  8. 彻底理解Cisco/Linux/Windows的IP路由
  9. [AngularJS + Unit Testing] Testing Directive&#39;s controller with bindToController, controllerAs and isolate scope
  10. fstream,ifstream,ofstream 详解与用法
  11. HDU 5506(GT and set)
  12. Flask开发微电影网站(二)
  13. 阿里云HBase携X-Pack再进化,重新赋能轻量级大数据平台
  14. windows下配置 GNU的gdb调试功能
  15. html5——canvas画布
  16. 20171228 C#值类型和引用类型
  17. 联想 Lenovo PWR-G60 无线掌中宝拆机
  18. Karma - MVC Framework for Unity3D
  19. unity2D限制位置的背景移动补偿效果
  20. Linux共享库 Linux内核链表

热门文章

  1. MATLAB中的微积分运算(数值&amp;符号)
  2. release management客户端无法连接到release management server的问题解决
  3. Fiddler的安装设置
  4. C++类的实例化的两种方法
  5. Facebook FB.init() status参数的作用
  6. 支付宝AR实景红包上线不久即遭破解,官方已提高技术门槛
  7. 简单的jquery实现tab切换
  8. 圆形图片CustomShapeImageView
  9. private set
  10. cocos坐标系及坐标转换