顺便附上第三题代码,我感觉思路和答案都是对的啊,看看有没有大佬指导一下 (每次二分查找之后其实可以更新left的,但是懒得优化) int binarySearch(int n, const vector<int>& mosters) { int l = -1; int r = mosters.size(); while (l + 1< r) { int m = (r - l) / 2 + l; if (mosters[m] < n) { l = m; } else { r = m; } } return l; } int main() { int p, n, m; cin >> p >> n >> m; vector<int> mosters(n); vector<bool> killed(n, 0); vector<int> bosses(m); for (int i = 0; i < n; i++) { cin >> mosters[i]; } for (int i = 0; i < m; i++) { cin >> bosses[i]; } for (auto boss : bosses) { int curP = p; int left = -1; int right = mosters.size(); int time = 0; while (curP <= boss) { time++; int mosterId = binarySearch(curP, mosters); while (mosterId != -1 && killed[mosterId]) { mosterId--; } if (mosterId <= -1 || mosters[mosterId] < 0.1 * curP) // 都打不过或者不如 * 1.1 { curP *= 1.1; } else { curP += mosters[mosterId]; killed[mosterId] = true; } cout << time << " " << curP << endl; } cout << time << endl; } }
点赞 1

相关推荐

牛客网
牛客企业服务