1 solutions
-
0
Guest MOD
-
0
二分答案 ,计算每台打印机在秒内能打印多少试题,看加起来是否大于等于。
那么如何确定最大份数呢?我们可以把每一周期看做每一段,根据时间可以算得有多少段,有多少段就有多少个
因为不一定是完整周期,所以我们还要考虑,最后一段不完整的区间,用剩下的时间除以 ,但是需要注意这个结果可能会越界到 时间里,也就是说剩下的时间除以的值最大只能是
#include <bits/stdc++.h> using i64 = long long; void Solve() { int n, K; std::cin >> n >> K; std::vector<int> t(n), l(n), w(n); for (int i = 0; i < n; ++i) { std::cin >> t[i] >> l[i] >> w[i]; } auto check = [&](i64 mid) -> bool { i64 ans = 0; for (int i = 0; i < n; ++i) { i64 T = 1LL * t[i] * l[i] + w[i]; ans += mid / T * l[i]; ans += std::min((mid % T) / t[i], 1LL * l[i]); if (ans >= K) { return true; } } return false; }; i64 lo = 0, hi = 2e18; while (lo < hi) { i64 mid = (lo + hi) / 2; if (check(mid)) { hi = mid; } else { lo = mid + 1; } } std::cout << lo << '\n'; } int main() { std::ios_base::sync_with_stdio(false); std::cin.tie(nullptr); int t = 1; for (int ti = 1; ti <= t; ++ti) { Solve(); } return 0; }
- 1
Information
- ID
- 1484
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 7
- Tags
- (None)
- # Submissions
- 95
- Accepted
- 19
- Uploaded By