zoukankan      html  css  js  c++  java
  • [BZOJ 1011][HNOI2008]遥远的行星(奇技淫巧)

    Description

    直线上N颗行星,X=i处有行星i,行星J受到行星I的作用力,当且仅当i<=AJ.此时J受到作用力的大小为 Fi->j=
    Mi*Mj/(j-i) 其中A为很小的常量,故直观上说每颗行星都只受到距离遥远的行星的作用。请计算每颗行星的受力
    ,只要结果的相对误差不超过5%即可

    Solution

    只要结果的相对误差不超过5%即可

    只要结果的相对误差不超过5%即可

    只要结果的相对误差不超过5%即可

    当计算行星i的受力时,如果i超过一定值,a*i相对i来说就很小了,可以把分母取平均值,用前缀和计算

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<cstdlib>
    #define eps 1e-9
    using namespace std;
    int n;
    long long m[100005],sum[100005];
    double a;
    int main()
    {
        scanf("%d%lf",&n,&a);
        for(int i=1;i<=n;i++)
        {
            scanf("%lld",&m[i]);
            sum[i]=m[i]+sum[i-1]; 
        }
        for(int i=1;i<=n;i++)
        {
            double x=0;
            int hah=a*i+eps; 
            if(i<=1000)
            for(int j=1;j<=hah;j++)
            x+=(m[j]*m[i])/(double)(i-j);
            else
            {x=(sum[hah]*m[i])/(i-hah*0.5);}
            printf("%lf
    ",x);
        }
        return 0;
    }
  • 相关阅读:
    学习进度笔记
    博雅数据机器学习07
    学习进度笔记
    博雅数据机器学习06
    《一级架构师》阅读笔记
    学习进度笔记
    博雅数据机器学习05
    递归的概念
    CSS学习笔记3:选择器及优先级
    CSS学习笔记2:伪类
  • 原文地址:https://www.cnblogs.com/Zars19/p/6652871.html
Copyright © 2011-2022 走看看