BZOJ 2048 2009国家集训队 书堆 数学算法
题目大意:经典的物理上的桌边堆书问题,初中物理老师以前还讲过,只是仅仅记住了结论。
。
。
没关系,简单证明一下就好
首先我们设由上至下第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国家集训队 书堆 数学算法的更多相关文章
- [BZOJ 2048] [2009国家集训队]书堆 【调和级数】
题目链接:BZOJ - 2048 题目分析 只有一本书时,这本书的重心落在桌子边缘上,伸出桌面的长度就是 1/2. 有两本书时,第一本书的重心就落在第二本书的边缘上,两本书的重心落在桌子边缘上,两本书 ...
- BZOJ 2038: [2009国家集训队]小Z的袜子
二次联通门 : BZOJ 2038: [2009国家集训队]小Z的袜子 /* BZOJ 2038: [2009国家集训队]小Z的袜子 莫队经典题 但是我并不认为此题适合入门.. Answer = ∑ ...
- BZOJ 2038: [2009国家集训队]小Z的袜子(hose) [莫队算法]【学习笔记】
2038: [2009国家集训队]小Z的袜子(hose) Time Limit: 20 Sec Memory Limit: 259 MBSubmit: 7687 Solved: 3516[Subm ...
- BZOJ 2038: [2009国家集训队]小Z的袜子(hose)【莫队算法裸题&&学习笔记】
2038: [2009国家集训队]小Z的袜子(hose) Time Limit: 20 Sec Memory Limit: 259 MBSubmit: 9894 Solved: 4561[Subm ...
- BZOJ 2038: [2009国家集训队]小Z的袜子(hose)
2038: [2009国家集训队]小Z的袜子(hose) Time Limit: 20 Sec Memory Limit: 259 MBSubmit: 7676 Solved: 3509[Subm ...
- BZOJ 2038 [2009国家集训队]小Z的袜子 莫队
2038: [2009国家集训队]小Z的袜子(hose) 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=2038 Descriptionw ...
- Bzoj 2038: [2009国家集训队]小Z的袜子(hose) 莫队,分块,暴力
2038: [2009国家集训队]小Z的袜子(hose) Time Limit: 20 Sec Memory Limit: 259 MBSubmit: 5763 Solved: 2660[Subm ...
- BZOJ 2039: [2009国家集训队]employ人员雇佣
2039: [2009国家集训队]employ人员雇佣 Time Limit: 20 Sec Memory Limit: 259 MBSubmit: 1369 Solved: 667[Submit ...
- BZOJ 2038: [2009国家集训队]小Z的袜子(hose) ( 莫队 )
莫队..先按sqrt(n)分块, 然后按块的顺序对询问排序, 同块就按右端点排序. 然后就按排序后的顺序暴力求解即可. 时间复杂度O(n1.5) --------------------------- ...
随机推荐
- go语言Notepad++简易开发环境搭建(windows)
1.下载安装go语言:https://golang.org/dl/选择对应的平台,建议使用msi安装包,这个会帮你配置好环境变量(也许需要重启)对应的环境变量有: GOROOT - C:\Go\PAT ...
- WIN 10家庭版没有Hyper-V
新建文件Hyper-V.cmd 内容如下 pushd "%~dp0"dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum > ...
- 【转】Java 集合系列04之 fail-fast总结(通过ArrayList来说明fail-fast的原理、解决办法)
概要 前面,我们已经学习了ArrayList.接下来,我们以ArrayList为例,对Iterator的fail-fast机制进行了解.内容包括::1 fail-fast简介2 fail-fast示例 ...
- 笔记《精通css》第5章 链接应用样式
第5章 链接应用样式 1.链接伪类选择器 a : link{ } (寻找没有被访问过的链接) a : visied{ }(寻找被访问过的链接) 动态伪类选择器 a : hover ...
- Puppeteer——自动化脚本设计
我被分配了一个繁琐的任务,就是要给100个相同的站点做同样的配置.曾经就有做过相同的事,那时还不会写脚本,全靠手动配置.机械的配置了两天的时间,身体感觉被掏空.所以这次我决定还是写一个脚本自动的进行配 ...
- html5——动画案例(太阳系)
太阳系主要利用定位,伪元素 <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...
- TCP:三次握手,URG、ACK、PSH、RST、SYN、FIN 含义
http://blog.csdn.net/wudiyi815/article/details/8505726 TCP:SYN ACK FIN RST PSH URG简析 三次握手Three-way ...
- ubuntu 更改终端颜色
1.$ sudo gedit .bashrc 2.PS1="\[\033[1;36;01m\]\u\[\033[00m\]\[\033[1;34;01m\]@\[\033[00m\]\[\0 ...
- .net core发布程序
这里说的是,和.net core运行库一起发布,所以,目标运行系统,可以不安装.net core也能运行 1.project.json 把dependencies里面的type删除掉,后面加入&quo ...
- CAD设置图层亮度(com接口)
主要用到函数说明: MxDrawXCustomFunction::Mx_SetLayerBright 设置显示亮度,默认值为100%.详细说明如下: 参数 说明 LPCTSTR pszLayerNam ...