1 条题解
-
0
自动搬运
来自洛谷,原作者为

Utilokasteinn
技不如人搬运于
2025-08-24 22:21:47,当前版本为作者最后更新于2020-05-10 19:55:54,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
大水题,但是还是错了一次,半分钟打出一个暴力求解,结果TLE了5个点,代码如下:
#include<bits/stdc++.h> using namespace std; int main() { int v,a,b,s=0; cin>>a>>b>>v; for(int i=1;s+=a;i++,s-=b) if(s>=v)cout<<i,exit(0); }然而正解是O(1)输出,当然TLE。
很容易发现,如果直接将v/(a-b)会出错。因为如果白天已经到了,就不用往下滑了。所以,先将高度减去一个白天上升的高度,然后再除以a-b的差,如果有余数,就要天数就要+1,或者直接用ceil函数(向上取整),最后还有加上刚开始减去的那个白天,也就是天数+1,所以得出的公式是ceil(1.0*(v-a)/(a-b))+1,但是,由于ceil返回的数是浮点数,所以最后还有强制类型转换。
代码如下:
#include<bits/stdc++.h> using namespace std; int main() { int a,b,v; cin>>a>>b>>v; cout<<int(ceil(1.0*(v-a)/(a-b))+1); return 0; }谢谢观赏。
- 1
信息
- ID
- 5508
- 时间
- 100ms
- 内存
- 32MiB
- 难度
- 2
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者