传送门

这完全是一道bug题……

用普通的方法来想,我们肯定是要枚举每一颗行星的,之后对于每颗行星,我们计算一下能影响到它的行星。从行星的引力计算公式来看,这样无论如何都无法用有效的算法求解。分子可以用前缀和,但是分母必须一个一个算,我们不可能全部通分一遍再计算的……而且那样的复杂度和原来也是一样。

那怎么办?我们注意到,他要求误差不超过5%即可。……这么大的误差都允许的话,就可以使用某些bug玄学算法。考虑到分母特别棘手,所以不如我们直接取一个区间之内的中位数为这个区间每次计算的分母,这样的话你只需要处理分子前缀和,之后依次枚举就可以了……。

复杂度O(n),神奇水过……因为A是在0.01~0.35之间的,所以其实把区间长度取到100大概就能过(也可以更小不过要注意别T了)

(好吧,这可能是假题解……)

代码很短。

#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstring>
#define rep(i,a,n) for(ll i = a;i <= n;i++)
#define per(i,n,a) for(ll i = n;i >= a;i--)
#define enter putchar('\n')
using namespace std;
typedef long long ll;
const int INF = 0x3f3f3f3f;
const int maxn = 1e5 + 5;
int read()
{int ans = 0,op = 1;char ch = getchar();while(ch < '0' || ch > '9'){if(ch == '-') op = -1;ch = getchar();}while(ch >= '0' && ch <= '9'){ans *= 10;ans += ch - '0';ch = getchar();}return ans * op;
}const int T = 100;
int n;
double a;
ll m[maxn], sum[maxn];int main()
{n = read();scanf("%lf", &a);rep(i,1,n) m[i] = read(),sum[i] = sum[i - 1] + m[i];rep(i,1,n){int x = i * a;double ans = 0;int L = 1, R = T;while(R <= x){ans += (sum[R] - sum[L - 1]) * m[i] / (i - ((L + R) >> 1));L += T,R += T;}rep(j,L,x) ans += m[j] * m[i] / (i - j);printf("%.6lf\n", ans);}return 0;
}

转载于:https://www.cnblogs.com/captain1/p/9495973.html

HNOI2008 遥远的行星相关推荐

  1. BZOJ 1011: [HNOI2008]遥远的行星

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

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

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

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

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

  4. [HNOI2008]遥远的行星

    https://www.luogu.org/problem/show?pid=3198 小于500的挨着算 大于的分母取平均值 #include<cstdio> using namespa ...

  5. [bzoj1011] [HNOI2008]遥远的行星

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

  6. [BZOJ 1011][HNOI2008]遥远的行星(奇技淫巧)

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

  7. jdbc odbc java mysql数据库连接_Java数据库连接之配置ODBC数据源

    java使用JDBC-ODBC桥接连接SQLServer数据库需要配置ODBC数据源,配置步骤如下: 1.进入控制面板,找到管理工具 2.看到ODBC数据源,有64位和32位的,如果你的数据库是64位 ...

  8. OI 刷题记录——每周更新

    每周日更新 2016.05.29 UVa中国麻将(Chinese Mahjong,Uva 11210) UVa新汉诺塔问题(A Different Task,Uva 10795) NOIP2012同余 ...

  9. BZOJ第一页刷题计划

    BZOJ第一页刷题计划 已完成:67 / 90 [BZOJ1000]A+B Problem:A+B: [BZOJ1001][BeiJing2006]狼抓兔子:最小割: [BZOJ1002][FJOI2 ...

  10. linux密码sha512解密,使用sha512算法加密linux密码

    深入浅出ExtJS 第五章 树形结构 5.1 TreePanel的基本使用 //树是一种非常典型的数据结构; 5.1.1 创建一棵树 //树控件有Ext.tree.TreePanel类定义,控件的名称 ...

最新文章

  1. shell脚本连接ftp推送文件夹_Linux下使用Shell脚本实现FTP自动上传和下载文件
  2. 针对于多线程概念的理解
  3. 3a算法 isp_Isp图像算法工程师
  4. SQLite 日期 时间
  5. Virtualbox安装增强工具失败
  6. c#3.0关于JSON简单操作的实用帮助类(泛型实现)
  7. aws sqs_在Spring使用AWS SQS创建消息驱动Bean
  8. Shiro系列-Shiro如何实现身份验证
  9. Windows下RabbitMQ安装及入门
  10. 【读书】《当我跑步时,我谈些什么》书评:我跑步时,只是跑着
  11. php简单选择题,念做个简易php选择题答题系统
  12. unity提取打包资源
  13. C语言——基础链表详解
  14. 隐藏计算机关机键,关机快捷键有哪些?电脑Windows快捷关机最全方法图文详解
  15. SAI2和PS如何查看当前鼠标位置内容的图层
  16. mini QQ(项目一)
  17. 目前流行的装修风格_现在最流行的装修风格是什么 装修风格流行趋势是什么...
  18. 接口文档编写步骤与格式
  19. 《滚雪球:巴菲特和他的财富人生》【美】艾丽斯·施罗德著
  20. Object类的equals方法

热门文章

  1. 两个工作流:什么时候选择BizTalk,什么时候选择WWF?微软人士给了一个简单的判断原则...
  2. Mac OS X 安装protobuf
  3. python工厂模式看不懂_python模式 工厂模式原理及实例详解
  4. scrcpy能显示不能控制
  5. 手机联系人分组名字都没了_艺术签名手写设计,每个名字都应该是精品,只是你没找对方法...
  6. XMLHttpRequest的方法
  7. 2020北理工夏令营机试
  8. 矩阵分析 (三) 矩阵的标准形
  9. Leetcode 720. Longest Word in Dictionary
  10. 微信如何实现自动跳转到用其他浏览器打开指定页面下载APP 1