zoukankan      html  css  js  c++  java
  • 1011: [HNOI2008]遥远的行星

    Time Limit: 10 Sec  Memory Limit: 162 MBSec  Special Judge
    Submit: 5521  Solved: 2076
    [Submit][Status][Discuss]

    Description

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

    Input

      第一行两个整数N和A. 1<=N<=10^5.0.01< a < =0.35,接下来N行输入N个行星的质量Mi,保证0<=Mi<=10^7

    Output

      N行,依次输出各行星的受力情况

    Sample Input

    5 0.3
    3
    5
    6
    2
    4

    Sample Output

    0.000000
    0.000000
    0.000000
    1.968750
    2.976000

    HINT

     

      精确结果应该为0 0 0 2 3,但样例输出的结果误差不超过5%,也算对

    这题什么鬼。。。考算法还考误差,还必须按题目的误差思路走

    根据题意,行星i的所受合力为:

    [F[i]=sum _{k=1}^{A*i}frac{m_{i}*m_{k}}{i-k}]

    但是直接计算会TLE(且不符合题目思路,这算是什么考点,考察玄学???)

    从分母i-k可以看出,最大为i-1,最小为i-A×k,由于只要结果的相对误差不超过5%即可,则可以将分母替换为i-A×i/2

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstdlib>
     4 #include<cmath>
     5 using namespace std;
     6 
     7 const int MAXN=110000;
     8 const double eps=1e-8;
     9 
    10 int n;
    11 double a;
    12 double m[MAXN],s[MAXN];
    13 
    14 int main()
    15 {
    16     scanf("%d %lf",&n,&a);
    17     for(int i=1;i<=n;i++)
    18     {
    19         scanf("%lf",&m[i]);
    20         s[i]=s[i-1]+m[i];
    21     }
    22     int T=min(1000,n);
    23     for(int i=1;i<=T;i++)
    24     {
    25         double ans=0;
    26         int k=(int)(a*(double)i+eps);
    27         for(int j=1;j<=k;j++) ans+=m[j]/(double)(i-j);
    28         printf("%.6lf
    ",ans*m[i]);
    29     }
    30     for(int i=T+1;i<=n;i++)
    31     {
    32         int k=(int)(a*(double)i+eps);
    33         double ans=m[i]*s[k]/(double)(i-k/2);
    34         printf("%.6lf
    ",ans);
    35     }
    36     return 0;
    37 }
  • 相关阅读:
    node
    github
    [模块] pdf转图片-pdf2image
    python 15 自定义模块 随机数 时间模块
    python 14 装饰器
    python 13 内置函数II 匿名函数 闭包
    python 12 生成器 列表推导式 内置函数I
    python 11 函数名 迭代器
    python 10 形参角度 名称空间 加载顺序
    python 09 函数参数初识
  • 原文地址:https://www.cnblogs.com/InWILL/p/9270573.html
Copyright © 2011-2022 走看看