HDU5432-Pyramid Split[通俗易懂]

HDU5432-Pyramid Split[通俗易懂]最近以各种借口偷懒了,上次BC的题一直也没补,今天才补完第一题,非常好过,可当时就是想不通~#include#include#include#defineeps1e-5doublea[10005],b[10005];intn;intbSearch(doublebegin,doubleend,doublee){doublemid,left=begi

大家好,又见面了,我是你们的朋友全栈君。

最近以各种借口偷懒了,上次BC的题一直也没补,今天才补完第一题,非常好过,可当时就是想不通~

#include<stdio.h>
#include<string.h>
#include<math.h>
#define eps 1e-5
double a[10005],b[10005];
int n;
int bSearch(double begin,double end,double e)
{
    double mid, left = begin, right = end;
    while(right-left>eps)
    {
        mid = (left + right)/2;
        double sum=0;
        for(int i=0;i<n;i++){
            if(a[i]<mid) continue;
            double r=(a[i]-mid)/a[i]*b[i];
            double h=a[i]-mid;
            sum+=1.0/3*r*r*h;
        }
        if(fabs(sum-e)<eps) return mid;
        if(sum-e>eps) left = mid;
        else right = mid ;
    }
    return left;
}
int main()
{
    int t;
    scanf("%d",&t);
    while(t--)
    {

        scanf("%d",&n);
        for(int i=0;i<n;i++)
            scanf("%lf",&a[i]);
        for(int i=0;i<n;i++)
            scanf("%lf",&b[i]);
        double sum=0;
        for(int i=0;i<n;i++){
            sum+=1.0/3*b[i]*b[i]*a[i];
        }
        sum/=2;
        double k=bSearch(0,5000,sum);
        printf("%d\n",(int)k);
    }
    return 0;
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/151015.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • MFC之document与view实践总结

    1.视图的同步更新UpdateAllViews>OnUpDate>WM_PAINT>OnDrawUpdateAllView(NULL)表示更新所有视图同时也可以根据U

    2021年12月28日
  • centos安装python3

    centos安装python3centos安装python31、查看安装默认安装位置whereispython2、python2.7默认安装是在/usr/bin目录中,切换到/usr/bin/cd/usr/bin/3、安装相关的依赖包yuminstall-yepel-releasezlib-develbzip2-developenssl-develncurses-develsqlite-develreadline-develtk-develgccmake4、安装pipyuminsta

  • Android开发环境搭建

    Android开发环境搭建Android开发环境搭建可以分为以下四步:第一步、安装JDK;第二步、安装Eclipse;第三步、下载并安装AndroidSDK;第四步、为Eclipse安装ADT插件下面详细介绍。第一

  • LC5软件激活成功教程用户口令[通俗易懂]

    LC5软件激活成功教程用户口令[通俗易懂]一、背景知识口令认证口令认证是身份认证的一种手段,计算机通过用户输入的用户名进行身份标识,通过访问·输入的口令对其是否拥有该用户对应的真实身份进行鉴别。口令攻击口令攻击可以通过强力攻击进行激活成功教程,也可以采用字典激活成功教程和字典混合激活成功教程的方法,根据是否掌握口令加密算法和口令数据的情况,采用在线激活成功教程和离线激活成功教程的方式。LC5LC5是一款口令激活成功教程工具,也可以被网络管理员用于检测Windows、Linux系统用户是否使用了不安全的密码,被普遍认为是当前最好、最快的Windows/Linux系统管理员账

  • 数字电路实验 01 – | TTL门电路的逻辑功能测试「建议收藏」

    数字电路实验 01 – | TTL门电路的逻辑功能测试「建议收藏」一、实验目的和任务测试TTL集成芯片中的与门、或门、非门、与非门、或非门与异或门的逻辑功能。 了解测试的方法与测试的原理。二、实验原理介绍实验中用到的基本门电路的符号为:在测试芯片逻辑功能时输入端用逻辑电平输出单元输入高低电平,然后使用逻辑电平显示单元显示输出的逻辑功能。三、实验数据、计算及分析…

  • Win10加Ubuntu20.04双系统安装教程

    Win10加Ubuntu20.04双系统安装教程安装步骤软件准备制作U盘启动盘windows下硬盘分区进入BIOS系统进行硬盘安装软件准备本文编辑日期是2020.8.4,此时最新版的Ubuntu系统版本为20.04。下载Ubuntu系统:Ubuntu下载中文站下载U盘启动盘制作软件:百度网盘提取码:uhrmEasyBCD(开机启动选择系统):百度网盘提取码:mxg2制作U盘启动盘准备一个4G以上的U盘做启动盘即可,制作系统盘时会将u盘格式化,注意将u盘内的文件做个备份。Ubuntu系统下载好后是一个.iso文件,如图打开UI

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号