LightOJ - 1048 Conquering Keokradong(贪心)
来源:互联网 发布:好的外文数据库 编辑:程序博客网 时间:2024/06/06 11:46
题目大意:要求你将N个数分成k + 1个区间,使得每个区间的和的最大值最小
解题思路:最大值最小,二分解决
#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int N = 1010;int n, k, l, r, cas = 1;int x[N];void init() { scanf("%d%d", &n, &k); r = 0, l = 0; for (int i = 0; i <= n; i++) { scanf("%d", &x[i]); l = max(x[i], l); r += x[i]; } n++;}bool judge(int mid) { int cur = 0, day = 0; for (int i = 0; i < n; i++) { if (cur + x[i] > mid) { cur = x[i]; day++; } else { cur += x[i]; } } return day <= k;}void solve() { while (l <= r) { int mid = (l + r) >> 1; if (judge(mid)) r = mid - 1; else l = mid + 1; } int Min = r + 1; printf("Case %d: %d\n", cas++, Min); int day = 0, i, way = 0; for (i = 0; i < n; i++) { if (way + x[i] > Min) { printf("%d\n", way); way = x[i]; day++; } else way += x[i]; if (k - day == n - i - 1) { printf("%d\n", way); break; } } if (i == n) printf("%d\n", way); else { for (i = i + 1; i < n; i++) printf("%d\n", x[i]); }}int main() { int test; scanf("%d", &test); while (test--) { init(); solve(); } return 0;}
0 0
- LightOJ - 1048 Conquering Keokradong(贪心)
- lightoj 1048 - Conquering Keokradong 【二分 + 贪心】
- LightOJ 1048 Conquering Keokradong(二分+贪心)
- Conquering Keokradong LightOJ 1048
- LightOJ 1048 - Conquering Keokradong(二分)
- LightOJ 1048 - Conquering Keokradong(二分逼近)
- LightOJ 1048 Conquering Keokradong | 二分
- LightOJ 1048 - Conquering Keokradong 【二分】
- LightOJ 1048 Conquering Keokradong (二分)
- LightOJ - 1048 Conquering Keokradong (二分)输出路径
- lightoj 1048 - Conquering Keokradong 二分答案
- 【Light】[1048]Conquering Keokradong
- Light oj 1048Conquering Keokradong
- lightoj1048 Conquering Keokradong
- LightOJ 1389 - Scarecrow(贪心啊)
- LightOJ - 1016 Brush (II)(贪心)
- LightOJ 1396 Palindromic Numbers (III)(贪心)
- LightOJ - 1198 Karate Competition (贪心)
- FMDB总结及其中的一些注意点
- ScrollView 获取滑动方向
- 算法策略的总结
- fastdfs环境搭建
- 14 Longest Common Prefix
- LightOJ - 1048 Conquering Keokradong(贪心)
- 监督学习(机器学习)
- OnItemClickListener与OnScrollListener监听器
- 树形dp题集之树的直径
- LightOJ - 1076 Get the Containers(二分)
- JAVA中3大集合框架队列的使用
- cocos2d-x设计模式发掘之二:二段构建模式
- Spark到底解决了什么根本性的技术问题?
- Windows多线程编程困惑