[HNOI2008]遥远的行星

https://www.luogu.org/problem/show?pid=3198

小于500的挨着算

大于的分母取平均值

#include<cstdio>
using namespace std;
double m[100005],sum[100005];
int main()
{
    int n;
    double a,ans;
    scanf("%d%lf",&n,&a);
    for(int j=1;j<=n;j++)
    {
        int i=(int)(a*j+1e-8);
        scanf("%lf",&m[j]);
        ans=0;
        if(j<=500)
            for(int k=1;k<=i;k++) ans+=m[k]*m[j]/(j-k);
        else ans=sum[i]*m[j]/(j-0.5*i);
        printf("%lf\n",ans);
        sum[j]=sum[j-1]+m[j];
    }
}

题目描述

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

时间: 2024-12-03 21:44:17

[HNOI2008]遥远的行星的相关文章

1011: [HNOI2008]遥远的行星

1011: [HNOI2008]遥远的行星 Time Limit: 10 Sec  Memory Limit: 162 MBSec  Special JudgeSubmit: 2241  Solved: 793[Submit][Status] Description 直线上N颗行星,X=i处有行星i,行星J受到行星I的作用力,当且仅当i<=AJ.此时J受到作用力的大小为 Fi->j=Mi*Mj/(j-i) 其中A为很小的常量,故直观上说每颗行星都只受到距离遥远的行星的作用.请计算每颗行星的受力

BZOJ 1011([HNOI2008]遥远的行星-估计误差)

1011: [HNOI2008]遥远的行星 Time Limit: 10 Sec  Memory Limit: 162 MBSec  Special Judge Submit: 2134  Solved: 755 [Submit][Status] Description 直线上N颗行星,X=i处有行星i,行星J受到行星I的作用力,当且仅当i<=AJ.此时J受到作用力的大小为 Fi->j=Mi*Mj/(j-i) 其中A为很小的常量,故直观上说每颗行星都只受到距离遥远的行星的作用.请计算每颗行星的

BZOJ 1011 [HNOI2008]遥远的行星

1011: [HNOI2008]遥远的行星 Time Limit: 10 Sec  Memory Limit: 162 MBSec  Special JudgeSubmit: 2559  Solved: 923[Submit][Status][Discuss] Description 直线上N颗行星,X=i处有行星i,行星J受到行星I的作用力,当且仅当i<=AJ.此时J受到作用力的大小为 Fi->j=Mi*Mj/(j-i) 其中A为很小的常量,故直观上说每颗行星都只受到距离遥远的行星的作用.请

【BZOJ 1011】 [HNOI2008]遥远的行星

1011: [HNOI2008]遥远的行星 Time Limit: 10 Sec  Memory Limit: 162 MBSec  Special Judge Submit: 2131  Solved: 754 [Submit][Status] Description 直线上N颗行星,X=i处有行星i,行星J受到行星I的作用力,当且仅当i<=AJ.此时J受到作用力的大小为 Fi->j=Mi*Mj/(j-i) 其中A为很小的常量,故直观上说每颗行星都只受到距离遥远的行星的作用.请计算每颗行星的

bzoj 1011[HNOI2008]遥远的行星 - 近似

1011: [HNOI2008]遥远的行星 Time Limit: 10 Sec  Memory Limit: 162 MBSec  Special Judge Description 直线上N颗行星,X=i处有行星i,行星J受到行星I的作用力,当且仅当i<=AJ.此时J受到作用力的大小为 Fi->j=Mi*Mj/(j-i) 其中A为很小的常量,故直观上说每颗行星都只受到距离遥远的行星的作用.请计算每颗行星的受力,只要结果的相对误差不超过5%即可. Input 第一行两个整数N和A. 1<

[BZOJ1011] [HNOI2008] 遥远的行星

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行

[BZOJ 1011] [HNOI2008] 遥远的行星 【近似解】

题目链接: BZOJ - 1011 题目分析 这道题的特别之处在于,答案可以有5%的误差. 嗯..So? 我还是不会,于是看题解. 神犇的题解就是利用这误差范围求一个近似解. 怎么求近似解呢?假如 g[i] 是第 i 个点受到的引力来源中最后的一个点.那么我们如果要直接求 f[i] (第i个点受到的引力)是要枚举 1 到 g[i] . 然而如果我们直接从之前的一个 f[i - t] 为基础近似一下,再暴力计算 g[i - t] + 1 到 g[i] 的部分,就会大大节省时间了. 因为离得越远的行

【bzoj1011】[HNOI2008]遥远的行星

#include<algorithm> #include<iostream> #include<cstring> #include<cstdlib> #include<cstdio> #include<cmath> #include<queue> using namespace std; typedef long double LD; #define N 100010 long double a; int n,T=50;

BZOJ_1011_[HNOI2008]_遥远的行星_(近似)

描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1011 \(n\)个行星,第\(i\)颗行星的质量为\(m_i\),给出一个很小的常数\(A\),对于第\(i\)颗行星,它所受的力$$f_i=\sum_{j=1}^{A\times{i}}\frac{m_i\times{m_j}}{i-j}$$ 求每一颗行星所受的力.误差不超过\(5%\) 分析 第一次做这种题,这也可以?! 对于小数据直接暴力即可.对于大数据我们就要好好利用误差限制啦~ 对