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%,也算对

Solution

什么鬼题……省选考这种题真的大丈夫?

观察下式子,假设$p$是能对当前点$i$产生影响的最靠右位置,

$ans_i=\sum_{j=1}^{p} \frac{M_i \times M_j}{i - j}$。

发现当$i$小的时候,我们是可以暴力的。

当$i$大的时候,根据“只要结果的相对误差不超过$5\%$即可”这句话,我们可以发现,分母是非常大的!也就是对答案的贡献非常小。

对$j$我们完全可以统一取个近似值来算,反正不超过误差就行……近似值取$\frac{p}{2}$就行了……随便用个什么前缀和的算一下……

Code

 #include<iostream>
#include<cstdio>
#define N (100009)
using namespace std; int n;
double a,M[N],sum[N]; int main()
{
scanf("%d%lf",&n,&a);
for (int i=; i<=n; ++i)
{
int p=(int)(a*i+1e-);
double ans=;
scanf("%lf",&M[i]);
if (i<=) for (int j=; j<=p; ++j) ans+=M[j]*M[i]/(i-j);
else ans=sum[p]*M[i]/(i-p/);
printf("%.10lf\n",ans);
sum[i]=sum[i-]+M[i];
}
}

BZOJ1011:[HNOI2008]遥远的行星(乱搞)的更多相关文章

  1. bzoj1011 [HNOI2008]遥远的行星

    1011: [HNOI2008]遥远的行星 Time Limit: 10 Sec  Memory Limit: 162 MBSec  Special JudgeSubmit: 2480  Solved ...

  2. BZOJ1011 [HNOI2008]遥远的行星 【奇技淫巧】

    1011: [HNOI2008]遥远的行星 Time Limit: 10 Sec  Memory Limit: 162 MBSec  Special Judge Submit: 5058  Solve ...

  3. [bzoj1011](HNOI2008)遥远的行星(近似运算)

    Description 直 线上N颗行星,X=i处有行星i,行星J受到行星I的作用力,当且仅当i<=AJ.此时J受到作用力的大小为 Fi->j=Mi*Mj/(j-i) 其中A为很小的常量, ...

  4. 【bzoj1011】[HNOI2008]遥远的行星

    1011: [HNOI2008]遥远的行星 Time Limit: 10 Sec  Memory Limit: 162 MBSec  Special JudgeSubmit: 3711  Solved ...

  5. 1011: [HNOI2008]遥远的行星

    1011: [HNOI2008]遥远的行星 Time Limit: 10 Sec  Memory Limit: 162 MBSec  Special JudgeSubmit: 2241  Solved ...

  6. BZOJ 1011 [HNOI2008]遥远的行星

    1011: [HNOI2008]遥远的行星 Time Limit: 10 Sec  Memory Limit: 162 MBSec  Special JudgeSubmit: 2559  Solved ...

  7. BZOJ 1011 [HNOI2008]遥远的行星 (误差分析)

    1011: [HNOI2008]遥远的行星 Time Limit: 10 Sec  Memory Limit: 162 MBSec  Special JudgeSubmit: 4974  Solved ...

  8. 【BZOJ】1011: [HNOI2008]遥远的行星(近似)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1011 题意:$f[i] = \sum_{j=1}^{i-1} \frac{M[i]M[j]}{i-j ...

  9. [HNOI2008]遥远的行星

    题目描述 直线上N颗行星,X=i处有行星i,行星J受到行星I的作用力,当且仅当i<=AJ.此时J受到作用力的大小为 Fi->j=Mi*Mj/(j-i) 其中A为很小的常量,故直观上说每颗行 ...

随机推荐

  1. C# 函数 递归

    函数:独立完成某项功能的一个个体,有固定功能函数有 高度抽象函数. 作用: 提高代码的重用性 提高功能开发的效率 提高程序代码的可维护性 函数四要素:   输入       输出       函数名  ...

  2. Java基本数据类型总结(转载)

    Java基本数据类型总结 基本类型,或者叫做内置类型,是JAVA中不同于类的特殊类型.它们是我们编程中使用最频繁的类型.java是一种强类型语言,第一次申明变量必须说明数据类型,第一次变量赋值称为变量 ...

  3. c# 对文件的各种操作

    C# 获取文件名及扩展名 string aFirstName = aFile.Substring(aFile.LastIndexOf("\\") + 1, (aFile.LastI ...

  4. Web前端基础——HTML

    一 .HTML 概述 HTML : 超文本标记语言 HyperText markup language <marquee behavior="alternate"> & ...

  5. java 传入list集合 返回树形菜单,for循环遍历

    public List<SysPermissionVO> getTreeMenu(List<SysPermissionVO> list,SysPermissionVO sysP ...

  6. Linux常用基本命令(split )

    split命令 作用:切割文件 格式: split [option] [input] [prefix] -l 指定分割后文件的最大行数 ghostwu@dev:~/linux/split$ cat - ...

  7. Into outfile禁用情况下另类方法拿webshell

    首先环境如下: OS:Windows 2003 WAF:Safe Dog 4.0正式版 phpmyadmin:4.7(许多都可以) Mysql:5.5+ PHP:5.3 Apache:2.x 总结方法 ...

  8. POJ2195&&HDU1533(KB11-D 最小费用最大流)

    Going Home Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 23515   Accepted: 11853 Desc ...

  9. 超强、超详细Redis入门教程

    (1)什么是redis? Redis 是一个基于内存的高性能key-value数据库. (有空再补充,有理解错误或不足欢迎指正) (2)Reids的特点 Redis本质上是一个Key-Value类型的 ...

  10. Mac 上用 Homebrew 安装 .NET Core 1.0 RC4 004771

    年级大了,其实并不是很喜欢升级到最新版,特别是不怎么爱用还没有 Release 的版本了.虽然 .NET Core 已经是 RC4,但毕竟还没有 Release.可过年回来,用 yeoman 创建了一 ...