【51nod1093】【骆驼和香蕉】【贪心】
2016-12-02 20:21
239 查看
题目大意
一只骆驼每次最多负重K只香蕉,而它每走1公里要吃掉1只香蕉,不吃完不肯走。现在这只骆驼要去到N公里以外的地方,如果N > K,那么即使骆驼装满了香蕉,也无法1次走到目的地,不过骆驼可以在中途设置一些补给点,先把一些香蕉运过去,下次经过时可以在这些地方进行补给。这样一来便能走到距离 > K的地方。现在给出N和K,问骆驼走到目的地最少需要消耗多少香蕉。
解题思路
原来可以停在实数点!!!考虑从终点开始,一定是经过1,3,5,7……次,因为后一次总要比前一次多运一趟。两个点之间距离是K/i(i=1,3,5,7……),可以自己计算一下这样刚好可以到达终点,最后的答案要上去整。
code
#include<cmath> #include<cstdio> #include<algorithm> #define LD double #define LL long long #define min(a,b) ((a<b)?a:b) #define max(a,b) ((a>b)?a:b) #define fo(i,j,k) for(int i=j;i<=k;i++) #define fd(i,j,k) for(int i=j;i>=k;i--) using namespace std; int const maxn=5*1e4; LD n,K; int main(){ scanf("%lf%lf",&n,&K); int i;LD ans=0; for(i=1;n>K/i+1e-12;i+=2){ ans+=K; n-=K/i; } ans=(ans+n*i); printf("%d",(ans==(int(ans)))?(int)ans:(int)ans+1); return 0; }
相关文章推荐
- 自动化测试中如何兼容多版本UI——模糊匹配
- 计蒜客-大钉骑马走江湖
- 前端js书写规范和维护方案
- Easytoch使用方法
- python列表
- 51nod-1677 treecnt
- MySQL update Error Code: 1175
- matlab 控件之间通过GUI Data传递数据
- Java与C++面向对象不同点
- 关于企业号后台的一些零碎使用
- Java运行时异常与普通异常的区别
- 详解mysql数据库的左连接、右连接、内连接的区别
- xacml开源代码
- 堆排序原理及算法实现(最大堆)
- matlab—图像显示
- 新手学习网页布局的小技巧!
- [基础训练]数列排序
- 第一个linux驱动_读写设备文件(2)
- (第十三周)Final Review会议
- POJ 1201 Intervals 差分约束系统