经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » C » 查看文章
cf1059D. Nature Reserve(三分)
来源:cnblogs  作者:自为风月马前卒  时间:2018/10/8 9:14:44  对本文有异议

题意

题目链接

Sol

欲哭无泪啊qwq。。。。昨晚一定是智息了qwq

说一个和标算不一样做法吧。。

显然\(x\)轴是可以三分的,半径是可以二分的。

恭喜你获得了一个TLE的做法。。

然后第二维的二分是没有必要的,直接拿圆的标准方程推一下取个最大值就行了。。。。。昨晚没想到qwq给数学老师丢脸了。。

  1. #include<cstdio>
  2. #include<cmath>
  3. #include<algorithm>
  4. #define double long double
  5. using namespace std;
  6. const double eps = 1e-7, INF = 1e18;
  7. const int MAXN = 1e5 + 10;
  8. inline int read() {
  9. char c = getchar(); int x = 0, f = 1;
  10. while(c < '0' || c > '9') {if(c == '-') f = -1; c = getchar();}
  11. while(c >= '0' && c <= '9') x = x * 10 + c - '0',c = getchar();
  12. return x * f;
  13. }
  14. int N, up, down;
  15. double max(double a, double b) {return a > b ? a : b;}
  16. double min(double a, double b) {return a < b ? a : b;}
  17. struct Node {
  18. double x, y;
  19. }a[MAXN];
  20. int check(int x, int y) {
  21. if(x < 0 && y > 0) return 1;
  22. else return 0;
  23. }
  24. double mxr;
  25. double sqr(double x) {
  26. return x * x;
  27. }
  28. double f(double x) {
  29. double mx = 0;
  30. for(int i = 1; i <= N; i++)
  31. mx = max(mx, fabs((sqr(a[i].x - x) + sqr(a[i].y)) / (2.0 * a[i].y)));
  32. return mx;
  33. }
  34. int main() {
  35. N = read();
  36. double L = INF, R = -INF;
  37. for(int i = 1; i <= N; i++) {
  38. a[i].x = read(), a[i].y = read();
  39. up = min(up, a[i].y);
  40. mxr = max(a[i].y, mxr);
  41. L = min(a[i].x, L);
  42. R = max(a[i].x, R);
  43. }
  44. if(check(up, mxr)) {puts("-1"); return 0;}
  45. mxr = INF;
  46. if(up < 0) for(int i = 1; i <= N; i++) a[i].y = -a[i].y;
  47. int tim = 100;
  48. while(tim--) {
  49. double x = (2 * L + R) / 3, y = (L + 2 * R) / 3;
  50. f(x) < f(y) ? R = y : L = x;
  51. // printf("%Lf %Lf\n", f(x), f(y));
  52. }
  53. printf("%.10Lf", f(L));
  54. return 0;
  55. }
 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号