UVa 714 Copying Books——二分最大值最小化
来源:互联网 发布:武汉java讲师 编辑:程序博客网 时间:2024/06/14 09:56
注意上界在累加时可能超过int范围
#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;int m, k;long long a[1000];bool judge(long long x) { long long sum = 0, cnt = 1; for (int i = m; i >= 1; i--) { sum += a[i]; if (sum > x) { sum = a[i]; cnt++; if (cnt > k) return false; } } return true;}void output(int ans) { int gang[1000]; memset(gang, 0, sizeof(gang)); long long sum = 0, cnt = 1; for (int i = m; i >= 1; i--) { sum += a[i]; if (sum > ans) { sum = a[i]; cnt++; gang[i] = 1; } if (k - cnt == i) { for (; i >= 1; i--) { gang[i] = 1; } break; } } int flag = 0; for (int i = 1; i <= m; i++) { if (flag++) printf(" "); printf("%d", a[i]); if (gang[i]) printf(" /"); } printf("\n");}int main(){ int T; scanf("%d", &T); while (scanf("%d %d", &m, &k) == 2) { long long L = 0, R = 0; for (int i = 1; i <= m; i++) { scanf("%lld", &a[i]); R += a[i]; if (a[i] > L) L = a[i]; } while (L <= R) { long long x = L + (R - L) / 2; if (judge(x)) R = x - 1; else L = x + 1; } output(L); } return 0;}
阅读全文
1 0
- UVa 714 Copying Books——二分最大值最小化
- UVa 714 Copying Books 二分 + 贪心 (最大值最小化问题)
- UVA 714 Copying Books 最大值最小化问题 (贪心 + 二分)
- uva 714 - Copying Books(贪心 最大值最小化 二分)
- UVa 714 - Copying Books,最大值最小化问题
- Uva 714Copying Books,(最大值最小化问题)
- UVA 714 Copying Books(最大值最小化)
- uva 714 Copying Books(二分法求最大值最小化)
- uva 714 Copying Books 最大值最小化 附测试数据
- UVA714- Copying Books(最大值最小化)
- UVA714 Copying Books (最大值最小化)
- UVA - 714 Copying Books 最大值尽量小
- uva 714——Copying Books
- uva 714 - Copying Books(二分+贪心)
- UVA - 714 Copying Books(二分+贪心)
- UVa 714 Copying Books(贪心 二分)
- uva 714 Copying Books (二分)
- UVa 714 - Copying Books(二分查找)
- 解决spark-shell输出日志信息过多
- Linux中Platform设备驱动
- C#170课的主要内容
- requestAnimationFrame简单例子
- 【数论】17.6.4 质数统计 题解
- UVa 714 Copying Books——二分最大值最小化
- C_复习心得 第15章 位操作
- array_column() 函数用法
- bzoj1759: Let there be rainbows!
- 【hibernate】——hql简单属性+实体对象查询
- 链式栈
- caffe 重新用Python编译tripletloss、fine turning
- 网站统计中的数据收集原理及实现
- C#171课的主要内容