当前位置:   article > 正文

洛谷P1182 数列分段 Section II

洛谷p1182

P1182 数列分段 Section II - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

这道题和 洛谷P3853 [TJOI2007]路标设置 、 洛谷P2678 [NOIP2015 提高组] 跳石头 思路做法类似,这里不过多赘述。

下面附上我写的代码:

  1. #include <iostream>
  2. #include <algorithm>
  3. using namespace std;
  4. const int N = 100010;
  5. int a[N];
  6. int main()
  7. {
  8. int n, m;
  9. cin >> n >> m;
  10. for (int i = 0; i < n; i++) cin >> a[i];
  11. int r = 1e9;
  12. int l = *max_element(a, a + n);//该函数是求a数组里的最大值 显然l必然>=该最大值
  13. //int l = 1;这里这样写不行会使后面判断错误 这个自行体会
  14. while (l < r)
  15. {
  16. int cnt = 0;
  17. int sum = 0;
  18. int mid = l + r >> 1;
  19. for (int i = 0; i < n; i++)
  20. {
  21. if (sum + a[i] <= mid) sum += a[i];
  22. else
  23. {
  24. i--;
  25. sum = 0;
  26. cnt++;
  27. }
  28. }
  29. if (sum > 0) cnt++;
  30. if (cnt <= m) r = mid;
  31. else l = mid + 1;
  32. }
  33. cout << l;
  34. return 0;
  35. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/284774
推荐阅读
相关标签
  

闽ICP备14008679号