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

lailai0916
Student & Developer搬运于
2025-08-24 22:47:40,当前版本为作者最后更新于2023-05-23 22:21:46,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
原题链接
解题思路
-
显然,操作一在操作二之前进行更具性价比。因此,最合理的策略是优先执行若干次操作一,然后再进行操作二。
-
可以枚举操作一的执行次数:
- 如果执行 次操作一,可以得到 个人,所需时间为 。
- 这 个人出 道问题,所需时间为 。
- 最多只会进行 次操作一,因为 人已经足够多。通过枚举所有可能的执行次数,计算每种情况下所需的总时间,并取最小值,即 $\min_{n=0}^{30} (n\cdot a+\left\lceil\frac{c}{2^n}\right\rceil\cdot b)$。
参考代码
#include <bits/stdc++.h> using namespace std; using ll=long long; const ll inf=0x3f3f3f3f3f3f3f3f; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int T; cin>>T; while(T--) { ll a,b,c; cin>>a>>b>>c; ll ans=inf; for(int i=0;i<=30;i++) { ans=min(ans,i*a+(c+(1ll<<i)-1)/(1ll<<i)*b); } cout<<ans<<'\n'; } return 0; } -
- 1
信息
- ID
- 8785
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 2
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者