[BZOJ] 书堆
问题描述
蚂蚁是勤劳的动物,他们喜欢挑战极限?现在他们迎来了一个难题!蚂蚁居住在图书馆里,图书馆里有大量的书籍。书是形状大小质量都一样的矩形。蚂蚁要把这些书摆在水平桌子的边緣。蚂蚁喜欢整洁的布置,所以蚂蚁规定书本必须水平摆放,宽必须平行于桌緣(如图),而且不允许同一高度摆多本书。
https://cdn.luogu.org/upload/pic/30575.png
蚂蚁想要让书本伸出桌子边缘尽量远,同时不让书因为重力垮下来。它们己经用不知道什么方法测出了书的长度M(如图)。如果总共有N本书,请你帮忙计算如何摆放使得最多水平伸出桌缘多远。你不用考虑蚂蚁用什么方法搭建这堆书。
如果某本书以上的所有书的重心的竖直射影不在这本书上,或者正好落在在这本书的边界上,那么这堆书是不稳定的,会因为重力而垮下来。
考虑以下的假设:
- 不考虑地球自转,重力系数也不因高度改变;
- 书是质量均匀,质地坚硬的理想二维物体;
- 在不会垮的前提下,每本书的位置坐标可以是任意实数。
输入格式
第一行正整数 N M
输出格式
一行(有换行符),L,表示水平延伸最远的整数距离 (不大于答案的最大整数)
样例输入输出
输入输出样例 1
Input Output
1 100 49
输入输出样例 2
Input Output
2 100 74
解析
一道物理题加数学题......
首先,通过杠杆原理可以得到,最后的长度为
\]
对于\(\sum\)中的部分,将\(1/2\)提出来后就是调和级数,但直接计算不仅时间不够,而且精度也不够。我们可以通过数学证明百度百科发现,第n个调和数与n的自然对数之差收敛于欧拉常数,即第n个调和数可以近似地估计为
\]
其中\(\gamma =0.5772156649......\)。
所以,对于n<1e7,我们直接计算;对于n>1e7,我们用近似公式计算。注意题目说重心不能落在边缘,所以要减去一个极小值后向下取整后输出答案。
代码
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
const double eps=1e-9;
long long n,m,i,ans;
double ret;
int main()
{
cin>>n>>m;
if(n>10000000) ret=(log(n)+0.5772156649)/2;
else{
for(i=1;i<=n;i++) ret+=1.0/(2.0*i);
}
ans=m*ret-eps;
cout<<ans<<endl;
return 0;
}
[BZOJ] 书堆的更多相关文章
- [BZOJ 2048] [2009国家集训队]书堆 【调和级数】
题目链接:BZOJ - 2048 题目分析 只有一本书时,这本书的重心落在桌子边缘上,伸出桌面的长度就是 1/2. 有两本书时,第一本书的重心就落在第二本书的边缘上,两本书的重心落在桌子边缘上,两本书 ...
- BZOJ 2048 2009国家集训队 书堆 数学算法
题目大意:经典的物理上的桌边堆书问题,初中物理老师以前还讲过,只是仅仅记住了结论. . . 没关系,简单证明一下就好 首先我们设由上至下第i本书比它以下那本书多伸出去的长度为a[i],前缀和为s[i] ...
- BZOJ 2127: happiness [最小割]
2127: happiness Time Limit: 51 Sec Memory Limit: 259 MBSubmit: 1815 Solved: 878[Submit][Status][Di ...
- BZOJ 3275: Number
3275: Number Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 874 Solved: 371[Submit][Status][Discus ...
- BZOJ 2879: [Noi2012]美食节
2879: [Noi2012]美食节 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 1834 Solved: 969[Submit][Status] ...
- bzoj 4610 Ceiling Functi
bzoj 4610 Ceiling Functi Description bzoj上的描述有问题 给出\(n\)个长度为\(k\)的数列,将每个数列构成一个二叉搜索树,问有多少颗形态不同的树. Inp ...
- BZOJ 题目整理
bzoj 500题纪念 总结一发题目吧,挑几道题整理一下,(方便拖板子) 1039:每条线段与前一条线段之间的长度的比例和夹角不会因平移.旋转.放缩而改变,所以将每条轨迹改为比例和夹角的序列,复制一份 ...
- 【sdoi2013】森林 BZOJ 3123
Input 第一行包含一个正整数testcase,表示当前测试数据的测试点编号.保证1≤testcase≤20. 第二行包含三个整数N,M,T,分别表示节点数.初始边数.操作数.第三行包含N个非负整数 ...
- 【清华集训】楼房重建 BZOJ 2957
Description 小A的楼房外有一大片施工工地,工地上有N栋待建的楼房.每天,这片工地上的房子拆了又建.建了又拆.他经常无聊地看着窗外发呆,数自己能够看到多少栋房子. 为了简化问题,我们考虑这些 ...
随机推荐
- 关于【C++项目:无法解析的外部符号】
1,基本原因,[链接器]->[附加库目录]没有填写相关库的路径.或没有在[链接器]->[输入]->[附加依赖项]中填写相关库的名称 2,高级原因:如果不是1的原因,那就有可能是平台与 ...
- 高清摄像头MIPI接口与ARM连接【转】
本文转载自:http://www.cnblogs.com/whw19818/p/5811299.html MIPI摄像头常见于手机.平板中,支持500万像素以上高清分辨率.它的全称为“Mobile I ...
- HTML-空格字符实体
不换行空格,全称No-Break Space,它是最常见和我们使用最多的空格,大多数的人可能只接触了 ,它是按下space键产生的空格.在HTML中,如果你用空格键产生此空格,空格是不会累加的(只 ...
- github.com/oschwald/maxminddb-golang 安装报错
安装 maxminddb-golang错误: dill@ubuntu-vm:~/workspace/go/src/github.com$ go get github.com/oschwald/maxm ...
- SoapUI学习之SOAP和REST的区别
一.Soap和Rest的定义 SOAP(Simple Object Access Protocol 简单对象访问协议),用于在Web Service中把远程调用和返回封装成机器可读的格式化数据,事实上 ...
- vue --》watch 深度监听的优化。
话不多说,直接上代码,注释很清楚 <template> <div> <input type="text" v-model="value&qu ...
- python基础-5.2装饰器
1.了解装饰器前准备 #### 第一波 #### def foo(): print 'foo' foo #表示是函数,仅指向了函数的地址,为执行 foo() #表示执行foo函数 #### 第二波 # ...
- win10系统Mysql5.7服务启动报:"1053错误:服务没有及时响应启动或控制请求"
win10安装Mysql5.7: MySQL压缩包解压后,在目录下增加my.ini配置文件 [mysqld] port = basedir=D:\Mysql datadir=D:\Mysql\data ...
- Ubuntu 中查找软件安装的位置
Ubuntu 中查找软件安装的位置 执行该程序 直接执行该程序,有时候一些程序执行时会显示出自己的位置,比如: 用命令 ps -e 找到该程序的名字 用 find 或 whereis 命令查找文件位置 ...
- C#中ComboBox动态绑定赋值
http://www.crifan.com/csharp_combobox_data_dynamic_binding/ C#中,已有一个List,想要动态的,绑定到ComboBox中. [解决过程] ...