题目描述

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

输入输出格式

输入格式:

第一行两个整数N和A. 1<=N<=10^5.0.01< a < =0.35,接下来N行输入N个行星的质量Mi,保证0<=Mi<=10^7

输出格式:

N行,依次输出各行星的受力情况

输入输出样例

输入样例#1:
复制

5 0.3
3
5
6
2
4
输出样例#1: 复制

0.000000
0.000000
0.000000
1.968750
2.976000

说明

精确结果应该为0 0 0 2 3,但样例输出的结果误差不超过5%,也算对

一开始以为要高级数据结构,其实可以不要

问题实际在于要除以(i-j)

重点在于误差不超过5%

所以我们可以估读

当A×i小于100时,可以枚举

A×i大于100,可以把[1,x]分成100份[li,ri]

那么每个区间内的所有力的和就可以估读

ans+=d[i]*(s[ri]-s[li-1])/(i-(ri-li)/2)

也就是把所有的1/(i-j)≈1/(i-(ri-li)/2)

因为0.01<=A<=0.35,所以5%的误差差不多

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
double A,ans[],d[],sum[];
int n;
int main()
{int i,j;
cin>>n>>A;
for (i=;i<=n;i++)
{
scanf("%lf",&d[i]);
sum[i]=sum[i-]+d[i];
}
for (i=;i<=n;i++)
{
int x=i*A;
if (x>)
{
int lim=x/;
for (j=lim;j<=lim*;j+=lim)
{
double mid=(*i-*j+lim-)*0.5;
ans[i]+=d[i]*(sum[j]-sum[j-lim])/mid;
}
for (j=lim*+;j<=x;j++)
ans[i]+=d[i]*d[j]/(i-j);
}
else if (x<=&&x)
{
for (j=;j<=x;j++)
ans[i]+=(d[i]*d[j]/(i-j));
}
}
for (i=;i<=n;i++)
printf("%.6lf\n",ans[i]);
}

[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 JudgeSubmit: 3711  Solved ...

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

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

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

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

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

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

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

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

  7. BZOJ1011:[HNOI2008]遥远的行星(乱搞)

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

  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. [bzoj1011](HNOI2008)遥远的行星(近似运算)

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

随机推荐

  1. java 中的JDK封装的数据结构和算法解析(集合类)----顺序表 List 之 ArrayList

    1. 数据结构之List (java:接口)[由于是分析原理,这里多用截图说明] List是集合类中的容器之一,其定义如下:(无序可重复) An ordered collection (also kn ...

  2. IDEA配置Struts框架

    对于刚接触编程的同学,对框架只是还不是很了解,本文主要介绍在Idea上配置Struts,实现简单的页面跳转,以及页面参数传递. 在进行代码编写之前先对Idea进行一个简单了解,对于长时间接触编程的,对 ...

  3. Alpha冲刺No.8

    一.站立式会议 解决真实手机中出现的各种问题 细化界面设计 数据库上传与获取日拍 二.项目实际进展 能够上传和获取日拍信息 界面设计微调 三.燃尽图 四.团队合照 五.总结 白天金工实习,晚上才有时间 ...

  4. Beta冲刺置顶随笔

    项目名称:城市安全风险管控系统 小组成员: 张梨贤.林静.周静平.黄腾飞 Beta冲刺随笔 Beta预备 Beta冲刺Day1 Beta冲刺Day2 Beta冲刺Day3 Beta冲刺Day4 Bet ...

  5. 【转载】NetFPGA-1G-CML从零开始环境配置

    ##环境 深度Linux ###环境配置 ```bash sudo apt-get install libsigc++ sudo apt-get install qgit sudo apt-get i ...

  6. Django 视图层

    URL映射 1.分布式url映射 include()函数提供分布式url映射功能,使URL映射可以被编写在多个url.py文件中 from django.conf.urls import url fr ...

  7. python 模块部分补充知识

    一.hashlib hashlib 模块主要用于加密相关的操作,代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法. 实例 ...

  8. emqtt 试用(九)ssl认证 - 客户端 mqttfx 验证

    一.代码生成证书 1.安装openssl,配置path变量 安装文件:Win64OpenSSL-1_1_0f.exe 安装openssl:C:\OpenSSL-Win64 配置path变量:C:\Op ...

  9. LINGO 基础学习笔记

    LINGO 中建立的优化模型可以由5个部分组成,或称为 5 段(section): (1)集合段(SETS):这部分要以"SETS:"开始,以"ENDSETS" ...

  10. 我对let和const理解

    ​let和const是es6新出的两种变量声明的方式,接下来我来分别针对这两个,聊一聊. let ​let它的出现,我认为主要是解决了块级作用域的需求.因为js以前本身是没有什么块级作用域的概念的(顶 ...