bzoj

洛谷

这题意是不是不太清楚

真正题意:求$$f_i=\sum_{j=1}^{\lfloor iA \rfloor} \frac{M_iM_j}{i-j}$$

似乎只能\(O(n*\lfloor n*A \rfloor)\)求

但是,注意只要结果的相对误差不超过 5% 即可

于是对于较大的\(i\)来说,\(f_i\)可以近似的看为\(M_i*\frac{\sum_{j=1}^{\lfloor i*A \rfloor} M_j}{i-\frac{\lfloor i*A \rfloor}{2}}\)

因为\(A\)是一个不超过0.35的实数,并且\(i\)较大时\(i-j\)也会比较大,所以近似一下可以接受

至于为什么,emmm你猜

#include<bits/stdc++.h>
#define LL long long
#define il inline
#define re register
#define inf 2099999999
#define max(a,b) ((a)>(b)?(a):(b))
#define min(a,b) ((a)<(b)?(a):(b))
#define db double
#define eps (1e-5) using namespace std;
const int N=100000+10;
il LL rd()
{
re LL x=0,w=1;re char ch=0;
while(ch<'0'||ch>'9') {if(ch=='-') w=-1;ch=getchar();}
while(ch>='0'&&ch<='9') {x=(x<<3)+(x<<1)+(ch^48);ch=getchar();}
return x*w;
}
int n,nn;
db a,m[N],ans; int main()
{
n=rd();scanf("%lf",&a);
for(int i=1;i<=n;i++) scanf("%lf",&m[i]);
nn=min(3000,n);
for(int i=1;i<=nn;i++)
{
int mm=(int)(i*a+eps);
ans=0;
for(int j=1;j<=mm;j++) ans+=m[j]/(db)(i-j);
ans*=m[i];
printf("%.8lf\n",ans);
}
db tm=0;
for(int i=nn+1,la=1;i<=n;i++)
{
int mm=(int)(i*a+eps);
while(la<=mm) tm+=m[la++];
ans=m[i]*tm/((db)i-(db)mm/2);
printf("%.8lf\n",ans);
}
return 0;
}

luogu P3198 [HNOI2008]遥远的行星的更多相关文章

  1. P3198 [HNOI2008]遥远的行星

    传送门 发现 $A$ 不大,又允许较大的误差,考虑乱搞 考虑求出每个位置的答案,因为有 $1e5$ 个位置,所以每个位置差不多可以计算 $100$ 次贡献 所以把每个可以贡献的位置尽量均匀分成 $10 ...

  2. bzoj1011 [HNOI2008]遥远的行星

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

  3. 【bzoj1011】[HNOI2008]遥远的行星

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

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

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

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

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

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

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

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

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

  8. [HNOI2008]遥远的行星

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

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

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

随机推荐

  1. Hbase Shell 数据操作说明

    启动.关闭hbase./bin/start-hbase.sh./bin/stop-hbase.sh 查询HBase版本.它的语法如下:hbase(main):010:0> version 建表c ...

  2. selenium之安装和登陆操作举例

    安装selenium: python -m pip install selenium-3.4.3-py2.py3-none-any.whl 下载对应浏览器版本的驱动,且在环境变量PATH中指定驱动程序 ...

  3. 快速排序Qsort

    快速排序Qsort是所有学习算法和数据结构最基础的一个部分,也是考试题和面试的一个小重点. 快速排序的时间复杂度为O(N*lgN),而且常数因子很小. 对于随机数据,效率特别高: 对于构造的恶意数据, ...

  4. BZOJ1030[JSOI2007]文本生成器——AC自动机+DP

    题目描述 JSOI交给队员ZYX一个任务,编制一个称之为“文本生成器”的电脑软件:该软件的使用者是一些低幼人群,他们现在使用的是GW文本生成器v6版.该软件可以随机生成一些文章―――总是生成一篇长度固 ...

  5. BZOJ5206 JSOI2017原力(三元环计数)

    首先将完全相同的边的权值累加.考虑这样一种trick:给边确定一个方向,由度数小的连向度数大的,若度数相同则由编号小的连向编号大的.这样显然会得到一个DAG.那么原图的三元环中就一定有且仅有一个点有两 ...

  6. JSP 和 Servlet 的工作原理和生命周期

    JSP的英文名叫Java Server Pages,翻译为中文是Java服务器页面的意思,其底层就是一个简化的Servlet设计,是由sum公司主导参与建立的一种动态网页技术标准.Servlet 就是 ...

  7. Oracle11g创建表空间

    第1步:创建临时表空间   create temporary tablespace pgenius_temp tempfile '\data\oracle\oracledata\pgenius_tem ...

  8. NOIP2014题解

    NOIP2014题解 Day1 生活大爆炸版石头剪刀布 rps 简单模拟题,注意细节 #include<iostream> #include<cstdio> using nam ...

  9. job.yml

    job.yml apiVersion: batch/v1kind: Jobmetadata: name: myjobspec: completions: 6 parallelism: 2 templa ...

  10. nowcoder172C 保护 (倍增lca+dfs序+主席树)

    https://www.nowcoder.com/acm/contest/172/C (sbw大佬太强啦 orz) 先把每一个路径(x,y)分成(x,lca),(y,lca)两个路径,然后就能发现,对 ...