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) --------------------------- ...
随机推荐
- 2 我们的C#学习方法
在这里我们借鉴了一种行之有效的学习编程语言的方法,并在此基础上进行了相应的改良.我们在培训新人中使用后,发现这种学习方法是非常有效的. 你通过做以下几个步骤来一步步学习C#语言. 1. 搞懂每一个我们 ...
- (转)Vue 爬坑之路(四)—— 与 Vuex 的第一次接触
在 Vue.js 的项目中,如果项目结构简单, 父子组件之间的数据传递可以使用 props 或者 $emit 等方式 http://www.cnblogs.com/wisewrong/p/62660 ...
- asp.net MVC 下拉多级联动及编辑
多级联动实现,附源码.当前,部分代码是参与博客园其它网友. 新增,前台代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 2 ...
- plsql developer连接oracle数据库
1.下载安装PLSQL Developer12 访问PLSQL Developer官网https://www.allroundautomations.com/bodyplsqldevreg.html, ...
- include和require区别
1. include()执行的时候需要引用的文件每次都要进行读取评估; require()执行时需要引用的文件只处理一次(实际上执行时需要引用的文件内容替换了require()语句) 可以看出若有包 ...
- Scala 技术笔记之 Option Some None
避免null使用 大多数语言都有一个特殊的关键字或者对象来表示一个对象引用的是“无”,在Java,它是null.在Java 里,null 是一个关键字,不是一个对象,所以对它调用任何方法都是非法的.但 ...
- 【VIP视频网站项目】VIP视频网站项目v1.0.3版本发布啦(程序一键安装+电影后台自动抓取+代码结构调整)
在线体验地址:http://vip.52tech.tech/ GIthub源码:https://github.com/xiugangzhang/vip.github.io 项目预览 主页面 登录页面 ...
- [luogu2154 SDOI2009] 虔诚的墓主人(树状数组+组合数)
传送门 Solution 显然每个点的权值可以由当前点上下左右的树的数量用组合数\(O(1)\)求出,但这样枚举会T 那么我们考虑一段连续区间,对于一行中两个常青树中间的部分左右树的数量一定,我们可用 ...
- 00.不规则json序列化使用eval、demjson
有下面一段字符串 import json str0 = '[{"name":"白云大道营业厅","siteaddr":"x...& ...
- 转:Windows Phone 7 设计简介
英文原文:smashingmagazine 导读:Windows Phone 7 引进了一个全新的内容管理和用户界面,命名为Metro的设计语言和理论.微软这次所看准的市场和用户群也与之前的老一代 W ...