【链接】
bzoj1011
【解题报告】
这题看题解才知道是估计题,可以发现用
#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;
}
作者:CHNWJD 发表于2017/10/31 7:27:25 原文链接
阅读:24 评论:0 查看评论