【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;

long double m[N],f[N];

int main()
{
	scanf("%d%Lf",&n,&a);
	for (int i=1;i<=n;i++)
		scanf("%Lf",&m[i]);
	for (int i=1;i<=T;i++)
	{
		int l=floor(a*i);
		for (int j=1;j<=l;j++)
			f[i]+=m[i]*m[j]/(i-j);
	}
	for (int i=1+T;i<=n;i++)
	{
		int l=floor(a*(i-T));
		int r=floor(a*i);
		for (int j=l+1;j<=r;j++)
			f[i]+=m[i]*m[j]/(i-j);
		f[i]+=m[i]*f[i-T]/m[i-T]*(i-T-1.0*l/2.0)/(i-1.0*l/2.0);
	}
	for (int i=1;i<=n;i++)
		printf("%Lf\n",f[i]);
	return 0;
}

  

时间: 2024-10-13 21:53:03

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

[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]遥远的行星-估计误差)

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为很小的常量,故直观上说每颗行星都只受到距离遥远的行星的作用.请计算每颗行星的

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 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<

[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+

[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] 的部分,就会大大节省时间了. 因为离得越远的行

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%\) 分析 第一次做这种题,这也可以?! 对于小数据直接暴力即可.对于大数据我们就要好好利用误差限制啦~ 对