int main() { int n, m, x, k; cin >> n >> m >> x >> k; vector<int> nums(n, 0); for (int i = 0; i < n; i++) cin >> nums[i]; int m_min = 50000; for (auto its : nums) m_min = min(its, m_min); int m_max = m_min + m * k; int l = 1; int r = m_max; while (l < r) { int mid = (l + r + 1)/2; vector<int> dp(n, 0); int numm = 0; bool b1 = true; for (int i = 0; i < n; i++) { int num = 0; int r0 = i + x < n ? i + x : n-1; for (int j = i - x>0 ? i - x : 0; j <= r0; j++) { num += dp[j]; } if (num * k + nums[i] >= mid) { continue; } else { int lest = mid - num * k - nums[i]; int num2 = lest / k; if (lest % k != 0) num2++; if (num2 + numm > m) { b1 = false; break; } dp[r0] += num2; numm += num2; } } if (b1) { l = mid; } else r = mid - 1; } cout << (l + r) / 2 << endl; system("pause"); } 二分查找
6 2

相关推荐

11-20 22:03
东北大学 Java
用哈基米写的简历,有点夸大,等我后面改谦虚点,能不能找个日常实习,项目是点评和天机,没什么荣誉要不要把蓝桥杯和六级删了算了,实在没门面
程序员花海:日常实习这份简历够用的,等实习之后把实习经历结合业务好好写一下 到时候把实习经历放在项目经历的前面 可以看我主页修改简历的模板
如何写一份好简历
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务