题意:有n个底面是正方形的四棱锥,用一个水平截面将所有四棱锥分成两半,要求上一半体积的和等于下一半,求水平截面的高度,输出整数部分。

解法:二分截面高度。比赛的时候二分写不明白了orz……

代码:

  1. #include<stdio.h>
  2. #include<iostream>
  3. #include<algorithm>
  4. #include<string>
  5. #include<string.h>
  6. #include<math.h>
  7. #include<limits.h>
  8. #include<time.h>
  9. #include<stdlib.h>
  10. #include<map>
  11. #include<queue>
  12. #include<set>
  13. #include<stack>
  14. #include<vector>
  15. #define LL long long
  16. using namespace std;
  17. double const eps = 1e-3;
  18. double a[10005], b[10005];
  19. int n;
  20. int cal(double mid)
  21. {
  22. double sum1 = 0.0, sum2 = 0.0;
  23. for(int i = 0; i < n; i++)
  24. {
  25. if(mid > a[i])
  26. {
  27. sum2 += a[i] * b[i] * b[i] / 3.0;
  28. continue;
  29. }
  30. double vsum = a[i] * b[i] * b[i] / 3.0;
  31. double x = (a[i] - mid) * b[i] / a[i];
  32. double lvsum = (a[i] - mid) * x * x / 3.0;
  33. sum1 += lvsum;
  34. sum2 += vsum - lvsum;
  35. }
  36. if(fabs(sum1 - sum2) < eps) return 0;
  37. if(sum1 > sum2) return 1;
  38. return -1;
  39. }
  40. int solve()
  41. {
  42. double l = 0.0, r = 1000.0;
  43. double mid;
  44. while((r-l)>= eps)
  45. {
  46. mid = (l + r) / 2.0;
  47. int tmp = cal(mid);
  48. if(tmp == 0) return mid;
  49. else if(tmp == 1) l = mid + eps;
  50. else r = mid - eps;
  51. }
  52. return mid;
  53. }
  54. int main()
  55. {
  56. int T;
  57. while(~scanf("%d", &T))
  58. {
  59. while(T--)
  60. {
  61. scanf("%d", &n);
  62. for(int i = 0; i < n; i++)
  63. scanf("%lf", &a[i]);
  64. for(int i = 0; i < n; i++)
  65. scanf("%lf", &b[i]);
  66. printf("%d\n", (int)solve());
  67. }
  68. }
  69. return 0;
  70. }

  

  1. while(r - l > 1)
  2. {
  3. LL mid = (l + r) >> 1;
  4. if(judge(mid)) l = mid;
  5. else
  6. r = mid;
  7. }
  8. cout << l << endl;
  9. /*贴一个实验室大神的二分模板*/

  

HDU 5432 Pyramid Split的更多相关文章

  1. hdu 5432 Pyramid Split 二分

    Pyramid Split Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://bestcoder.hdu.edu.cn/contests/conte ...

  2. hdu 5432 Pyramid Split(二分搜索)

    Problem Description Xiao Ming is a citizen who's good at playing,he has lot's of gold cones which ha ...

  3. HDU 5432 Rikka with Tree (BestCoder Round #53 (div.2))

    http://acm.hdu.edu.cn/showproblem.php?pid=5423 题目大意:给你一个树 判断这棵树是否是独特的 一颗树是独特的条件:不存在一颗和它本身不同但相似的树 两颗树 ...

  4. hdu5432 Pyramid Split

    Problem Description Xiao Ming is a citizen who's good at playing,he has lot's of gold cones which ha ...

  5. hdu 5432

    Problem Description As we know, Rikka is poor at math. Yuta is worrying about this situation, so he ...

  6. hdu5432 二分

    Pyramid Split Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Tot ...

  7. CVPR2021|一个高效的金字塔切分注意力模块PSA

    ​ 前言: 前面分享了一篇<继SE,CBAM后的一种新的注意力机制Coordinate Attention>,其出发点在于SE只引入了通道注意力,CBAM的空间注意力只考虑了局部区域的信息 ...

  8. 【二分法】 HDU 2446 Shell Pyramid

    意甲冠军:非常多,形成一个金字塔球 文章x层 x*(x+1)/ 2 球 给你个S 金字塔的一层代表第一数字向下S球 它是其中  这层中的第几行 第几列 公式 1 : x*(x+1)*(x+2)/ 6 ...

  9. hdu 2191 珍惜现在,感恩生活

    链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=2191 思路:多重背包模板题 #include <stdio.h> #include ...

随机推荐

  1. 【QT】OpenCV配置

    很郁闷的表示我的opencv放在 D:\\program files  里面路径有个空格,导致我不得不把整个opencv又拷贝到了一个没有空格的路径下面命名为opencvForQt 网上有各种用CMa ...

  2. Block、委托、回调函数原理剖析(在Object C语境)——这样讲还不懂,根本不可能!

    开篇:要想理解Block和委托,最快的方法是搞明白“回调函数”这个概念. 做为初级选手,我们把Block.委托.回调函数,视为同一原理的三种不同名称.也就是说,现在,我们把这三个名词当成一回事.在这篇 ...

  3. 空格的URL编码

    Q: 为什么我看的教材一会说是“+” 一会说是“%20” A: urlencode(" ") '返回+encodeURI(" ") '返回%20是有区别的

  4. 【转载】Eclipse自动编译问题

    今天调试的时候发现问题:调试的时候竟然在我注释的里面走,当时那个郁闷啊,每次都要clean下才可以,晚上感觉不对劲,上网查了查,原来是bulid automatically这个我把勾去掉了,下面是原文 ...

  5. Project Euler 81:Path sum: two ways 路径和:两个方向

    Path sum: two ways In the 5 by 5 matrix below, the minimal path sum from the top left to the bottom ...

  6. 欧拉工程第66题:Diophantine equation

    题目链接 脑补知识:佩尔方差 上面说的貌似很明白,最小的i,对应最小的解 然而我理解成,一个循环的解了,然后就是搞不对,后来,仔细看+手工推导发现了问题.i从0开始变量,知道第一个满足等式的解就是最小 ...

  7. phpmyadmin导入大sql文件失败解决办法

    摘自:http://www.xunway.com/info/post/499.asp 昨天小编的一个客户在在利用phpmyadmin导入大sql文件的时候,总是提示错误,反应给小编,小编也是第一次遇到 ...

  8. Hibernate逍遥游记-第6章 通过Hibernate操纵对象(select-before-update)

    1. 2. 3. 4. 5. 6. 7.

  9. 几种C#程序读取MAC地址的方法

    原文:几种C#程序读取MAC地址的方法 以下是收集的几种C#程序读取MAC地址的方法,示例中是读取所有网卡的MAC地址,如果仅需要读取其中一个,稍作修改即可. 1 通过IPConfig命令读取MAC地 ...

  10. 使用XSSFWork创建的xlsx后缀Excel文件无法打开

    使用XSSFWork创建的xlsx后缀Excel文件无法打开 标签: POIExcelmicrosoftxlsx 2015-04-21 10:49 1170人阅读 评论(2) 收藏 举报 分类: Ja ...