1 条题解
-
0
枚举
关键观察:
加强所有属性的操作可以同时提升三种属性,但可能效率不如单独加强某一属性。
我们需要找到一种训练策略,使得在 次训练后三种属性都达到或超过BOSS的属性值。
枚举策略:
枚举加强所有属性操作的次数 ( )。
对于每个 ,计算使用 次全体加强后,各属性还差多少达到BOSS属性值。
计算剩余属性缺口需要多少次单独加强操作。
如果总操作次数不超过 ,则可能达成目标。
#include <iostream> using namespace std; #define int long long signed main() { int T; cin >> T; while (T--) { int X, Y, Z; cin >> X >> Y >> Z; int x, y, z, a, k; cin >> x >> y >> z >> a >> k; bool possible = false; for (int v = 0; v <= k; ++v) { // 计算全加v次后的剩余需求 int rem_p = X - v * a; if (rem_p < 0) rem_p = 0; int rem_ag = Y - v * a; if (rem_ag < 0) rem_ag = 0; int rem_in = Z - v * a; if (rem_in < 0) rem_in = 0; // 处理力量需求 int s = 0; if (rem_p > 0) { if (x == 0) continue; // 无法单独补充 s = (rem_p + x - 1) / x; // 向上取整 } // 处理敏捷需求 int t = 0; if (rem_ag > 0) { if (y == 0) continue; t = (rem_ag + y - 1) / y; } // 处理智力需求 int u = 0; if (rem_in > 0) { if (z == 0) continue; u = (rem_in + z - 1) / z; } // 总训练次数是否足够 if (s + t + u <= k - v) { possible = true; break; } } cout << (possible ? "YES" : "NO") << endl; } return 0; }
- 1
信息
- ID
- 535
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 9
- 已通过
- 2
- 上传者