标签:inf too case cst end eps vol 技术 limit
Time Limit: 1000MS | Memory Limit: 65536K | |||
Total Submissions: 17324 | Accepted: 5835 | Special Judge |
Description
Input
Output
Sample Input
3 3 3 4 3 3 1 24 5 10 5 1 4 2 3 4 5 6 5 4 2
Sample Output
25.1327 3.1416 50.2655
Source
#include<iostream> #include<cstdio> #include<cmath> #include<cstring> #include<sstream> #include<algorithm> #include<queue> #include<deque> #include<iomanip> #include<vector> #include<cmath> #include<map> #include<stack> #include<set> #include<fstream> #include<memory> #include<list> #include<string> using namespace std; typedef long long LL; typedef unsigned long long ULL; #define MAXN 10009 #define N 21 #define MOD 1000000 #define INF 1000000009 const double eps = 1e-6; const double PI = acos(-1.0); /* 给定n个圆 和 F个朋友 要求把这n个圆 分成(F+1)份 每一份要尽量大! 直接二分搜索 每一份的大小 */ double s[MAXN];//面积 int n, f; int sgn(double x) { if (fabs(x) < eps) return 0; else if (x > 0) return 1; else return -1; } bool check(double x) { int cnt = 0; for (int i = 0; i < n; i++) { cnt += floor(s[i] / x); } return cnt >= (f + 1); } int main() { int T; scanf("%d", &T); while (T--) { scanf("%d%d", &n, &f); double tmp, l = 0.0, r; for (int i = 0; i < n; i++) { scanf("%lf", &tmp); s[i] = PI*tmp*tmp; r = max(s[i], r); } while (sgn(r-l)>0) { double mid = (l + r) / 2; if (check(mid)) l = mid; else r = mid; } printf("%.4lf\n", l); } }
标签:inf too case cst end eps vol 技术 limit
原文地址:http://www.cnblogs.com/joeylee97/p/6958386.html