1011: [HNOI2008]遥远的行星

Time Limit: 10 Sec  Memory Limit: 162 MBSec  Special Judge
Submit: 2559  Solved: 923
[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%,也算对

Source

题解:这是什么题。。。

注意到本题的重要条件就是误差,那么窝萌就乱搞好了。因为当行星的相距很远时,作用力会非常小,完全可以估算,即把前1-now的行星到当前行星的距离都算做到now/2的距离,O(1)求解。

 #include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<queue>
#include<cstring>
#define PAU putchar(' ')
#define ENT putchar('\n')
using namespace std;
const int maxn=+;
const double eps=1e-;
int n;double a,ans[maxn],m[maxn],pre[maxn];
void init(){
scanf("%d%lf",&n,&a);
for(int i=;i<=n;i++)scanf("%lf",&m[i]);
return;
}
void work(){
int now=;ans[]=0.0;
int lim=min(,n);
for(int i=;i<=lim;i++){
if((double)i*a+eps>=(double)(now+)) now++;
for(int j=;j<=now;j++)ans[i]=ans[i]+m[i]*m[j]/(double)(i-j);
}
pre[]=0.0;for(int i=;i<=n;i++)pre[i]=pre[i-]+m[i];
for(int i=;i<=n;i++){
if((double)i*a+eps>=(double)(now+)) now++;
ans[i]=pre[now]*m[i]/(double)(i-(int)now/);
}
return;
}
void print(){
for(int i=;i<=n;i++)printf("%.6lf\n",ans[i]);
return;
}
int main(){init();work();print();return ;}

最新文章

  1. jquery实现表格的搜索功能
  2. CSS3 :target伪类实现Tab切换效果
  3. maven pom文件结构详解
  4. samba服务搭建及管理
  5. hdu 5512 Pagodas 扩展欧几里得推导+GCD
  6. HTTP常见的状态码
  7. [转]SQL Server&#174; 2008 R2 Express 静默安装
  8. Mysql开启远程连接方法
  9. 常用排序算法java实现
  10. spark on yarn 运行问题记录
  11. Git把Tag推送到远程仓库
  12. rls与rlsd
  13. php7连接 sqlserver踩过的坑,could not find driver解决方式
  14. Final阶段基于NABCD评论作品
  15. IOS常用代码整理
  16. FineReport中如何用JavaScript自定义地图标签
  17. Redis实战(四)CentOS 7上Redis哨兵
  18. Wunderlist 云端任务管理(Todo list)工具
  19. sqlserver 关于子查询的优化操作
  20. Linux文件系统检查错误

热门文章

  1. DirectX 11游戏编程学习笔记之8: 第6章Drawing in Direct3D(在Direct3D中绘制)(习题解答)
  2. Git 版本控制工具使用介绍------Windows系统下使用
  3. Android - 软件自动更新的实现(转)
  4. 模板--&gt;求逆矩阵(利用初等变换求解)
  5. HUD 2444 The Accomodation of Students (二分图染色+最大匹配)
  6. jQuery 表单验证插件——Validation(基础)
  7. eclipse[日文版] 的SVN 上传步骤
  8. (转)dedecms网页模板编写
  9. 安装php时,make步骤报错make: *** [sapi/fpm/php-fpm] Error 1
  10. Foudation框架之一些常用结构体和常用类