随笔 - 531  文章 - 0  评论 - 3  阅读 - 10215 

有F+1个人来分N个圆形派,每个人得到的必须是一整块派(比如一个圆的1/5) ,  而不是几块拼在一起。派的面积要相同。

求每个人最多得到多大面积的派(不必是圆形)

二分答案---假设为x

一个圆 分为 S/x ,算出能划出几块,和总人数比较

 #include <iostream>
 #include <cstring>
 #include <algorithm> 
 #include <vector>
 #include <cmath>
 using namespace std;
 #define N 10003
  const double pi=acos(-1);
  double a[N];
  int n,m;
  
  int test(double x){
  	int s=0;
  	for(int i=1;i<=n;i++) s+=floor(a[i]/x);
  	return s>=m;
  }
 int main(){
 	int cas;
 	cin>>cas;
 	
 	while(cas--){
   cin>>n>>m; m++;
   int i,x;  double l=0,r=0;
   
   for(i=1;i<=n;i++){
   	 cin>>x; a[i]=x*x*pi; r=max(r,a[i]);
   }
   while(r-l>1e-6){
   	double md=(l+r)/2; 
   	if(test(md)) l=md; else r=md;
   }
   printf("%.4lf\n",l);
   	}
 }
 
 
 

posted on   towboat  阅读(6)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示