【乱搞】【HNOI 2008】【bzoj 1011】遥远的行星
来源:互联网 发布:东莞广电网络 编辑:程序博客网 时间:2024/06/04 06:36
1011: [HNOI2008]遥远的行星
Time Limit: 10 Sec Memory Limit: 162 MBSec Special JudgeSubmit: 2640 Solved: 954
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行,依次输出各行星的受力情况
Sample Input
5 0.335624
Sample Output
0.0000000.0000000.0000001.9687502.976000
HINT
精确结果应该为0 0 0 2 3,但样例输出的结果误差不超过5%,也算对
题解:
乱搞。。
你有没有觉得5%的误差允许有些奇怪?我觉得奇怪然而并没有想到怎么做,后来在sunshine大神的指导下发现可以模糊一下分母,只需要去个中位数就好了。
Code:
#include<iostream>#include<cstdio>#include<cstdlib>#include<cmath>#include<cstring>#include<algorithm>using namespace std;#define N 100100int n;double a,m[N],s[N],ans[N];int main(){ scanf("%d%lf",&n,&a); for (int i=1; i<=n; i++) scanf("%lf",&m[i]); ans[1]=0.0; int j=0; for (int i=2; i<=min(5000,n); i++){ if ((double)(a*i)+1e-6>=(double)(j+1.0)) j++; for (int k=1; k<=j; k++) ans[i]+=(m[i]*m[k])/(double)(i-k); } s[0]=0.0; for (int i=1; i<=n; i++) s[i]=s[i-1]+m[i]; for (int i=5001; i<=n; i++){ if ((double)(a*i)+1e-6>=(double)(j+1.0)) j++; ans[i]=(m[i]*s[j])/(double)(i-(int)(j/2.0)); } for (int i=1; i<=n; i++) printf("%0.6lf\n",ans[i]); return 0;}
1 0
- 【乱搞】【HNOI 2008】【bzoj 1011】遥远的行星
- BZOJ-1011 遥远的行星 乱搞+估
- 【BZOJ】1011 遥远的行星
- 【BZOJ】1011 遥远的行星
- BZOJ 1011: [HNOI2008]遥远的行星
- 【BZOJ 1011】 [HNOI2008]遥远的行星
- BZOJ 1011: [HNOI2008]遥远的行星
- BZOJ 1011 [HNOI2008]遥远的行星
- BZOJ 1011 遥远的行星 误差分析
- 【BZOJ 1011】[HNOI2008]遥远的行星
- [bzoj] 1011: [HNOI2008]遥远的行星
- BZOJ 1011: [HNOI2008]遥远的行星
- bzoj 1011: [HNOI2008]遥远的行星
- [bzoj 1011] [HNOI2008]遥远的行星:近似算法(一种正确性显然的非乱搞的科学做法)
- BZOJ1011: [HNOI2008]遥远的行星 乱搞
- BZOJ 1011 HNOI2008 遥远的行星 递推
- BZOJ 1011([HNOI2008]遥远的行星-估计误差)
- HYSBZ/BZOJ 1011 [HNOI2008] 遥远的行星 - 模糊答案&暴力
- 使用VS2010创建WebService 发布、测试
- 霓歌即时通讯中的相关专利整理(九)
- html5中canvas 错误集锦1(8.28)
- SDUT 3304 拓扑排序(链表)
- Java 中正确使用 wait, notify 和 notifyAll – 以生产者消费者模型为例
- 【乱搞】【HNOI 2008】【bzoj 1011】遥远的行星
- java Hello world
- 跳表(Skip List)的介绍以及查找插入删除等操作
- Docker新手安装笔记
- Linux的inode的理解
- Qt 简介
- eclipse下软件测试合集,findbugs,PMD,Sourcemonitor,Junit的安装和使用详细图文
- 单链表的插入、删除、遍历操作
- 获取释放DC(设备上下文)