三分啊三分

P.H. 发表于 2007-09-29 21:54:31

Ray’s Magic Ball

http://acm.nuaa.edu.cn/acmhome/problemdetail.do?&method=showdetail&id=1117

虽然我好弱小的,但积分还是记得的……

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
using namespace std;

const double eps = 1e-8;
const double pi = acos(-1.0);

double R, M, ru, lb, rb, m1, m2;


inline int dcmp(double x) {
  return x < -eps ? -1 : x > eps;
}


inline double calc(double h)
{
  double A, B;

  if(dcmp(h - R) < 0) {
    A = M * R + pi * ru * (2.0 / 3 * R * h * h * h - 1.0 / 4 * h * h * h * h);
    B = M + pi * ru * (R * h * h - 1.0 / 3 * h * h * h);
  }
  else {
    A = M * R + 5.0 / 12 * pi * ru * R * R * R * R;
    B = M + 2.0 / 3 * pi * ru * R * R * R;
    h -= R;
    A += pi * ru * (R * R * R * h + R * R * h * h / 2 - R * h * h * h / 3 - h * h * h * h / 4);
    B += pi * ru * (R * R * h - h * h * h / 3);
   }
  return A / B;
}

int main()
{
  while(3 == scanf("%lf%lf%lf", &R, &M, &ru)) {
    for(lb = 0, rb = R; dcmp(lb - rb) < 0; ) {
      m1 = lb + (rb - lb) / 3;
      m2 = m1 + (rb - lb) / 3;
      double t1 = calc(m1);
      double t2 = calc(m2);
      if(dcmp(t1 - t2) < 0) rb = m2;
      else lb = m1;
    }
    printf("%.2lf\n", m1);
  }
  return 0;
}
关键词(Tag): 积分 三分 极值 质心


收藏: QQ书签 del.icio.us 订阅: Google 抓虾

最新评论


  • wlxk
    2007-09-29 22:47:42 匿名 61.153.*.*

    哈哈,我积分差的一塌糊涂
    崇拜中。。。


  • jiangjiang
    2007-10-19 23:09:47 匿名 61.153.*.*

    j精力 你在崇拜啊

发表评论

* 昵称

已经注册过? 请登录

新用户请先注册 以便能显示头像及追踪评论回复

Email
网址
* 评论
表情
 
 

分类小组论坛
杂谈, 娱乐、八卦, 文学、艺术, 体育, 旅游、同城, 象牙塔, 情感, 时尚、生活, 星座, 科技

请注意遵守中华人民共和国法律法规, 如威胁到本站生存, 将依法向有关部门报告, 同时本站的相关记录可能成为对您不利的证据.

相关法律法规
全国人大常委会关于维护互联网安全的决定
中华人民共和国计算机信息系统安全保护条例
中华人民共和国计算机信息网络国际联网管理暂行规定
计算机信息网络国际联网安全保护管理办法
计算机信息系统国际联网保密管理规定