• bzoj1011


    题目真是没谁了??~~看了半天,交完后发现自己比别的大佬慢了好多,于是去借鉴了一下,然后发现由于精度我们可以卡一下~~

          对于星球j,我们要求的和式为ik=1mkmjjk

      当j很大时,i也不会太大,我们可以把式子化成ik=1mkmjj0.5i

      用sumi表示前i个星球的质量和,那么和式可以化成sumimjj0.5i

        这样我们就可以少用一个变量k,复杂度就降为了

    ----转自CtrlCV

    代码

    #include <stdio.h>
    #include <algorithm>
    #include <cstring>
    #include <cmath>
    #include <queue>
    #include <vector>
    using namespace std;
    const int maxn=100000+10;
    double m[maxn],sum[maxn];
    int main()
    {
      int n;
      double a,ans;
      scanf("%d%lf",&n,&a);
      for(int j=1;j<=n;j++)
      {
        int i=(int)(a*j+1e-8);
        scanf("%lf",&m[j]); 
        ans=0;
        if(j<=500)
         for(register int k=1;k<=i;k++)
          ans+=m[k]*m[j]/(j-k);
        else
         ans=sum[i]*m[j]/(j-i/2);
         printf("%lf
    ",ans);
         sum[j]=sum[j-1]+m[j];
      }
      return 0;
    }
    View Code
  • 相关阅读:
    jdk8 xp
    electron react
    electron install失败
    0511 Braft Editor和嵌套路由
    组播
    0427
    duilib自定义组件
    android 读写文件、列出根目录文件及新版本权限
    android Fragment使用RecyclerView
    Duilib 带xml的1
  • 原文地址:https://www.cnblogs.com/new-hand/p/CtrlCV.html
Copyright © 2020-2023  润新知