bzoj1011

Posted 新手-周

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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\\n",ans);
     sum[j]=sum[j-1]+m[j];
  }
  return 0;
}
View Code

 

以上是关于bzoj1011的主要内容,如果未能解决你的问题,请参考以下文章

bzoj1011[HNOI2008]遥远的行星

bzoj1011[HNOI2008]遥远的行星

BZOJ 1011: [HNOI2008]遥远的行星

BZOJ 1011: [HNOI2008]遥远的行星

bzoj1011

bzoj 1011 遥远的行星