题目大意:经典的物理上的桌边堆书问题,初中物理老师以前还讲过,只是仅仅记住了结论。

没关系,简单证明一下就好

首先我们设由上至下第i本书比它以下那本书多伸出去的长度为a[i],前缀和为s[i],那么我们要求的就是s[n]

为了简化问题我们设一本书的长度为1

如果n=1

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvUG9Qb1FRUQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

a[1]=1/2,毫无疑义

然后考虑两本书

两本书的时候,重心明显在距以下那本书左端点的3/4处,故a[2]=1-3/4=1/4

好的我知道了。第一本是1/2,第二本是1/4。那么第三本就是1/8!

这样想的同学都仅仅过了例子。

我们考虑三本书的情况

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvUG9Qb1FRUQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

这个是怎么算的呢?

首先先算三本书的重心距第三本书左端点的距离

第一本书的重心为1/4 + 1/2 + 1/2

第二本书的重心为1/4           + 1/2

第三本书的重心为                    1/2

于是我们能够得到三本书的重心位置为(1/4*2+1/2+1/2*3)/3=1/2*2/3+1/2

于是a[3]=1-(1/2*2/3+1/2)=1/2-1/2*2/3=1/2*(1-2/3)=1/2*1/3=1/6

然后四本书的情况就不用多说了吧

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvUG9Qb1FRUQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

讨论四本书的重心距第四本书左端点的距离

第一本书的重心位置为:1/6 + 1/4 + 1/2 + 1/2

第二本书的重心位置为:1/6 + 1/4           + 1/2

第三本书的重心位置为:1/6                     + 1/2

第四本书的重心位置为:                              1/2

于是四本书重心位置为(1/6*3+1/4*2+1/2+1/2*4)/4=1/2*3/4+1/2

a[4]=1-(1/2*3/4+1/2)=1/2-1/2*3/4=1/2*(1-3/4)=1/2*1/4=1/8

以此类推,我们有a[i]=1/2i

那么这个东西怎么求和呢?n<=10^18,O(n)肯定是不现实的

我们考虑调和级数极限公式

lim(n->+∞)1/1+1/2+1/3+...+1/n = ln(n+1)+r

当中r为欧拉常数 近似值约为0.57721566490153286060651209

但这是极限公式 对于n比較小的情况误差会比較大 所以当n比較小的时候O(n)暴力出解 n比較大的时候套用公式

分界线理论上O(n)能过去即可 1000W左右就能够 可是这题精度实在太低 所以1W就能过去 0MS出解

然后就水过去了。

一不小心手贱压了下代码 然后就RANK1了。。

此外100%达成 补番去了

#include<cmath>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define eps 1e-10
#define r 0.5772156649
using namespace std;
typedef long long ll;
ll n,m;
double ans;
int main()
{
int i;
cin>>n>>m;
if(n<=10000)
for(i=1;i<=n;i++)
ans+=0.5/i;
else
ans=log(n+1.0)+r,ans/=2.0;
ans*=m;
printf("%d\n",(int)(ans-eps) );
}

BZOJ 2048 2009国家集训队 书堆 数学算法的更多相关文章

  1. [BZOJ 2048] [2009国家集训队]书堆 【调和级数】

    题目链接:BZOJ - 2048 题目分析 只有一本书时,这本书的重心落在桌子边缘上,伸出桌面的长度就是 1/2. 有两本书时,第一本书的重心就落在第二本书的边缘上,两本书的重心落在桌子边缘上,两本书 ...

  2. BZOJ 2038: [2009国家集训队]小Z的袜子

    二次联通门 : BZOJ 2038: [2009国家集训队]小Z的袜子 /* BZOJ 2038: [2009国家集训队]小Z的袜子 莫队经典题 但是我并不认为此题适合入门.. Answer = ∑ ...

  3. BZOJ 2038: [2009国家集训队]小Z的袜子(hose) [莫队算法]【学习笔记】

    2038: [2009国家集训队]小Z的袜子(hose) Time Limit: 20 Sec  Memory Limit: 259 MBSubmit: 7687  Solved: 3516[Subm ...

  4. BZOJ 2038: [2009国家集训队]小Z的袜子(hose)【莫队算法裸题&&学习笔记】

    2038: [2009国家集训队]小Z的袜子(hose) Time Limit: 20 Sec  Memory Limit: 259 MBSubmit: 9894  Solved: 4561[Subm ...

  5. BZOJ 2038: [2009国家集训队]小Z的袜子(hose)

    2038: [2009国家集训队]小Z的袜子(hose) Time Limit: 20 Sec  Memory Limit: 259 MBSubmit: 7676  Solved: 3509[Subm ...

  6. BZOJ 2038 [2009国家集训队]小Z的袜子 莫队

    2038: [2009国家集训队]小Z的袜子(hose) 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=2038 Descriptionw ...

  7. Bzoj 2038: [2009国家集训队]小Z的袜子(hose) 莫队,分块,暴力

    2038: [2009国家集训队]小Z的袜子(hose) Time Limit: 20 Sec  Memory Limit: 259 MBSubmit: 5763  Solved: 2660[Subm ...

  8. BZOJ 2039: [2009国家集训队]employ人员雇佣

    2039: [2009国家集训队]employ人员雇佣 Time Limit: 20 Sec  Memory Limit: 259 MBSubmit: 1369  Solved: 667[Submit ...

  9. BZOJ 2038: [2009国家集训队]小Z的袜子(hose) ( 莫队 )

    莫队..先按sqrt(n)分块, 然后按块的顺序对询问排序, 同块就按右端点排序. 然后就按排序后的顺序暴力求解即可. 时间复杂度O(n1.5) --------------------------- ...

随机推荐

  1. go语言Notepad++简易开发环境搭建(windows)

    1.下载安装go语言:https://golang.org/dl/选择对应的平台,建议使用msi安装包,这个会帮你配置好环境变量(也许需要重启)对应的环境变量有: GOROOT - C:\Go\PAT ...

  2. WIN 10家庭版没有Hyper-V

    新建文件Hyper-V.cmd 内容如下 pushd "%~dp0"dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum > ...

  3. 【转】Java 集合系列04之 fail-fast总结(通过ArrayList来说明fail-fast的原理、解决办法)

    概要 前面,我们已经学习了ArrayList.接下来,我们以ArrayList为例,对Iterator的fail-fast机制进行了解.内容包括::1 fail-fast简介2 fail-fast示例 ...

  4. 笔记《精通css》第5章 链接应用样式

    第5章    链接应用样式 1.链接伪类选择器 a : link{    }   (寻找没有被访问过的链接) a : visied{    }(寻找被访问过的链接) 动态伪类选择器 a : hover ...

  5. Puppeteer——自动化脚本设计

    我被分配了一个繁琐的任务,就是要给100个相同的站点做同样的配置.曾经就有做过相同的事,那时还不会写脚本,全靠手动配置.机械的配置了两天的时间,身体感觉被掏空.所以这次我决定还是写一个脚本自动的进行配 ...

  6. html5——动画案例(太阳系)

    太阳系主要利用定位,伪元素 <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...

  7. TCP:三次握手,URG、ACK、PSH、RST、SYN、FIN 含义

    http://blog.csdn.net/wudiyi815/article/details/8505726 TCP:SYN ACK FIN RST PSH URG简析   三次握手Three-way ...

  8. ubuntu 更改终端颜色

    1.$ sudo gedit .bashrc 2.PS1="\[\033[1;36;01m\]\u\[\033[00m\]\[\033[1;34;01m\]@\[\033[00m\]\[\0 ...

  9. .net core发布程序

    这里说的是,和.net core运行库一起发布,所以,目标运行系统,可以不安装.net core也能运行 1.project.json 把dependencies里面的type删除掉,后面加入&quo ...

  10. CAD设置图层亮度(com接口)

    主要用到函数说明: MxDrawXCustomFunction::Mx_SetLayerBright 设置显示亮度,默认值为100%.详细说明如下: 参数 说明 LPCTSTR pszLayerNam ...