【2020.11.2 洛谷团队赛 普及组 模拟赛】T4 U138398 长途旅行

102 篇文章 1 订阅
102 篇文章 0 订阅

题目描述

一辆苹果能源汽车每次最多载苹果K个,而它每走1公里要用1个苹果。现在这辆车要去到N公里以外 的地方,如果N > K,那么即使装满了苹果,也无法1次走到目的地,不过可以在中途设置一些补给点 (补给点可以任意指定,不必要为整数点),先把一些苹果运过去,下次经过时可以在这些地方进行补 给。这样一来便能走到距离 > K的地方。现在给出N和K,问走到目的地最少需要消耗多少个苹果(输 出向上取整的整数答案)。

(消耗苹果不满1个记1个,例如,消耗1.3个记为2个,消耗 2.00001 2.00001 2.00001个记为3个)


输入格式

2个整数N K,中间用空格分隔。 ( 1 < = N , K < = 10000 , N < = 5 ∗ K ) (1 <= N, K <= 10000,N <= 5 * K) (1<=N,K<=10000N<=5K

输出格式

一个整数表示最少需要消耗多少个苹果。


输入输出样例

输入 #1
68 51
输出 #1
102

输入 #2
1000 500
输出 #2
3837

输入 #3
15 11
输出 #3
24


说明/提示

数据范围
20%的数据: N , K < = 20 N,K<=20 N,K<=20
50%的数据: $N,K<=100 $
100%的数据: N , K < = 10000 , N < = 5 ∗ K N,K<=10000,N<=5*K N,K<=10000,N<=5K


样例解释

对于样例1,我们在距起点17公里处设立补给点,先在起点处载着51个苹果,把其中17个苹果送去补给 点,然后返回起点,苹果恰好用完,再载着51个苹果出发到达补给点,到补给点时已经消耗17个苹 果,再加上补给点已有的17个苹果,汽车把当前的 17 + ( 51 − 17 ) = 51 17+(51-17)=51 17+5117=51个苹果载着出发到达终点,共 消耗 34 + 17 + 51 = 102 34+17+51=102 34+17+51=102个苹果


解题思路

确定了补给点之后,补给点就会将路程分成若干段,并且从终点到起点每段被车经过的次数为
1 , 3 , 5 , 7 , 9..... 1,3,5,7,9..... 1,3,5,7,9.....,因为靠近起点的一段总要比它后一段多运一趟来送补给。因此如果我们想恰好送完补给并
走到终点,两个点的距离就应为K/ i i i ,i指这一段被经过的次数


代码

#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<cmath>
#include<algorithm>
#include<queue>
using namespace std;
double ans,n,k,i;
int main(){
	scanf("%lf%lf",&n,&k);
	for(i=1;n>k/i;i+=2)
		ans+=k,n-=k/i; 
	ans+=i*n;
	printf("%d",int(ceil(ans)));
}
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值