题意是给你n个饼的半径 每个人 问没人最大能获得多少 每个人得到的必须是一样多
#include<stdio.h> #include<string.h> #include<cmath> #include<algorithm> #include<iostream> using namespace std; #define pi acos(-1.0) #define exp 1e-6 int n; double num[10010]; int judge(double pp) { int sum=0; for(int i=1;i<=n;i++) { double area=num[i]; while(area>=pp) { sum++; area-=pp; } } return sum; } int main() { int m,i,j,T; scanf("%d",&T); while(T--) { scanf("%d%d",&n,&m); double right=-1,left,mid; for(i=1;i<=n;i++) { scanf("%lf",&num[i]); num[i]=pi*num[i]*num[i]; if(num[i]>right) right=num[i]; } sort(num+1,num+1+n); left=0; while(right-left>=exp) { mid=(left+right)/2; if(judge(mid)>m) left=mid; else right=mid; } printf("%.4lf\n",left); } return 0; }
时间: 2024-10-30 22:06:33