• 题面描述

    • 直线上\(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. mysql json格式数据处理

    1.查询字段所对应的值: SELECT c.result_http->"$.create_time",json_extract(c.result_http,"$.e ...

  2. Inno Setup创建快捷方式跟快速运行栏快捷方式

    [Tasks] Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescrip ...

  3. java IO其他流

    1.内存操作流,ByteArrayInputStream和 ByteArrayOutputStream 案例:将小写转化为大写 /* * 内存操作流,将大写字母转化为小写字母(ByteArrayInp ...

  4. PreTranslateMessage()函数捕获键盘按键消息

    01. PreTranslateMessage函数,常用于屏蔽MFC对话框中默认的Enter和ESC消息 函数原型:BOOL PreTranslateMessage(MSG* pMsg) 用法举例: ...

  5. Time 模块中asctime()、time()、localtime()、ctime()、gmtime()的用法

    Time 模块包含了以下内置函数,既有时间处理的,也有转换时间格式的: time.asctime([tupletime]) 接受时间元组并返回一个可读的形式“Tue Dec 11 18:07:14 2 ...

  6. SQLServer客户端连接工具(支持2000,20005,2008)

    绿色版本, 体积小(不到2M), 支持数据库版本2000 2005 2008 界面仿最经典的SQLServer2000: 下载地址:http://download.csdn.net/detail/gg ...

  7. 201621123012《Java程序设计》第八周学习总结

    1. 本周学习总结 以你喜欢的方式(思维导图或其他)归纳总结集合相关内容. 2. 书面作业 1. ArrayList代码分析 1.1 解释ArrayList的contains源代码 答:如果为空的时候 ...

  8. 洛谷P2495 [SDOI2011]消耗战(虚树)

    题面 传送门 题解 为啥一直莫名其妙\(90\)分啊--重构了一下代码才\(A\)掉-- 先考虑直接\(dp\)怎么做 树形\(dp\)的时候,记一下断开某个节点的最小值,就是从根节点到它的路径上最短 ...

  9. mysqli扩展库---------预处理技术

    1, PHP程序与mysql之间处理sql语句流程如下,减少执行时间方式有三种: ① 减少php发送sql次数: ② 减少php与mysql之间网络传输时间: ③ 减少mysql的编译时间: 2, 预 ...

  10. XMPP后台搭建

    XMPP的环境搭建 1.下载MySQL 登录myql官网,点击页面下面的按钮 然后安装. 2.安装MySQL图形化管理工具mysql-workbench 同样进入mysql的官网, 下载 http:/ ...