• 题面描述

    • 直线上\(N\)颗行星,\(X=i\)处有行星\(i\),行星\(j\)受到行星\(i\)的作用力,当且仅当\(i<=A_j\)。此时J受到作用力的大小为\(F_{i\to j}=\frac{Mi*Mj}{j-i}\) 其中\(A\)为很小的常量,故直观上说每颗行星都只受到距离遥远的行星的作用。请计算每颗行星的受力,只要结果的相对误差不超过5%即可.
  • 输入格式

    • 第一行两个整数\(N\)和\(A\)。\(1\leq N\leq10^5,0.01<a\leq 0.35\),接下来\(N\)行输入\(N\)个行星的质量\(M_i\),保证\(0\leq M_i\leq 10^7\)
  • 输出格式

    • \(N\)行,依次输出各行星的受力情况
  • 题解

    • 这种题根本没意义

    • 注意到题目中有 误差\(\leq 5\%\) 的字眼,因此当我们枚举的\(i\)相当大后,我们便不必精确计算,而只要预估即可

    • 当\(i\leq10^3\)时,我们按照题面给出的计算式 计算。

    • 当\(i\geq 10^3\)时

      • \[\sum_{j=1}^r \frac{M_j*M_i}{i-j}\\
        \approx\sum_{j=1}^r \frac{M_j*M_i}{i-0.5*r}\\
        =\frac{sum_j*M_i}{i-0.5*r}\ (sum_j=\sum_{x=1}^j M_x)
        \]

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
const int MAXN=1e5+5;
const double eps=1e-8;
int n;
double a,m[MAXN],s[MAXN];
int main(){
scanf("%d%lf",&n,&a);
for (int i=1;i<=n;i++) scanf("%lf",&m[i]);
for (int i=1;i<=n;i++){
s[i]=s[i-1]+m[i];
int r=(int)floor(i*a+eps);
double ret=0;
if (i<=1000){
for (int j=1;j<=r;j++) ret+=m[j]*m[i]/(double)(i-j);
}
else ret=s[r]*m[i]/(i-0.5*r);
printf("%.6lf\n",ret);
}
return 0;
}

天助自助者

随机推荐

  1. 版本控制-https svn服务器搭建和常用命令(centos 6.3)

    Svn是比较优秀的版本控制工具,虽然功能和性能上无法和Git媲美,但由于其容易搭建和使用的特性,所以在各个小公司还是很受欢迎的.使用Git可参考<版本控制-Git服务器搭建和常用命令使用> ...

  2. ADF文件数据结构解析和ADF文件读写

    包括位姿和特征点位置和描述信息. What does an Area Description File (ADF) looks like? 4down votefavorite 2 I'm start ...

  3. 常用的String方法Math方法

    Arrays.sort();冒泡排序字符串.charAt(i);字符串索引i上的字符Integer.prsent(字符串) 字符串转整数equals(Object anObject) 将此字符串与指定 ...

  4. 重叠io操作

    第一章 一. 重叠模型的优点 1. 可以运行在支持Winsock2的所有Windows平台 ,而不像完成端口只是支持NT系统. 2. 比起阻塞.select.WSAAsyncSelect以及WSAEv ...

  5. 深入理解java虚拟机(三)对象回收判断算法以及死亡过程

    在堆里面存放着Java几乎所有的对象实例,垃圾收集器要进行垃圾回收,要做的第一步便是找出那些对象是需要回收的. 怎么判断对象是否需要回收? 常用的方法有两种. 1.引用计数算法.为每一个对象添加一个引 ...

  6. ZOJ3705:Applications

    Recently, the ACM/ICPC team of Marjar University decided to choose some new members from freshmen to ...

  7. hello world! hello blog!

    2015年12月21日 16:42:15   博客开启!

  8. map的回调函数

    问题:--js   (['1','2','3']).map(parseInt) 第一眼看到这个题目的时候,脑海跳出的答案是 [1, 2, 3],但是真正的答案是[1, NaN, NaN]. 首先让我们 ...

  9. AcWing 153. 双栈排序

    https://www.acwing.com/problem/content/155/ #include <cstring> #include <iostream> #incl ...

  10. const 与define 创建符号常量的 用法与区别

    一.define 的用法: 在c语言中我经常会看到 :#define  PI  12 ,这是创建了一个符号常量,这里面要注意没有那个等于号“=”: 二.const 的用法: 1.const 也可以来创 ...