BZOJ1011(HNOI2008)[遥远的行星]--估计

来源:互联网 发布:android 网络测速代码 编辑:程序博客网 时间:2024/05/14 04:48

【链接】
bzoj1011

【解题报告】

这题看题解才知道是估计题,可以发现用 ji2作为分母能够得到较为精确的答案。于是装作 MjA×ji=1Miji2 是答案就行了。

#include<cstdio>using namespace std;const int maxn=100005;int n;double A,ans,a[maxn],sum[maxn];int main(){    freopen("1011.in","r",stdin);    freopen("1011.out","w",stdout);    scanf("%d%lf",&n,&A);    for (int i=1; i<=n; i++) scanf("%lf",&a[i]),sum[i]=sum[i-1]+a[i];    for (int i=1; i<=n; i++)    {        int j=A*i+1e-8; ans=0;        if (j<=1000) for (int k=1; k<=j; k++) ans+=a[i]/(i-k)*a[k];         else ans+=a[i]/(i-j/2)*sum[j];        printf("%.6lf\n",ans);    }    return 0;}
原创粉丝点击