1 条题解
-
0
我们将要买的 斤土豆分成两个部分,购买 次的部分 ,和剩下的部分 。 因为在第一天每买 斤土豆送 斤,相当于买了 斤,我们可以推出如下公式:
代表购买次数,也就是 ,此时第一天买的花销是 ,第二天的花销是 , 代表剩余需要买的土豆,也就是 ,花销就是 或者 。 简单来说就是,购买 次的部分选择便宜的那一天,剩下的部分也选择较便宜的一天,我们可以推出最后的公式:
$q\times min(a\times m,b\times(m+1))+r\times min(a,b)$
时间复杂度 。
#include <bits/stdc++.h> #define vi vector<int> #define vpi vector<pair<int, int>> using namespace std; using ll = long long; constexpr int N = 110; void solve() { ll a, b; ll n, m; cin >> a >> b; cin >> n >> m; ll q = n / (m + 1); ll r = n - 1ll * q * (m + 1); cout << q * min(a * m, b * (m + 1)) + r * min(a, b) << endl; } signed main() { int T = 1; cin >> T; while(T --) solve(); }
信息
- ID
- 94
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 7
- 标签
- 递交数
- 22
- 已通过
- 7
- 上传者