二分搜索 POJ 3273 Monthly Expense
2015-07-25 18:43
591 查看
题目传送门
/* 题意:分成m个集合,使最大的集合值(求和)最小 二分搜索:二分集合大小,判断能否有m个集合。 */ #include <cstdio> #include <algorithm> #include <cstring> #include <cmath> using namespace std; const int MAXN = 1e5 + 10; const int INF = 0x3f3f3f3f; int a[MAXN]; int n, m; bool check(int tot) { int j = 1, sum = 0; for (int i=1; i<=m; ++i) { sum = 0; while (j <= n && sum + a[j] <= tot) { sum += a[j++]; } if (j == n + 1) return true; } return false; } int main(void) { //POJ 3273 Monthly Expense //freopen ("POJ_3273.in", "r", stdin); while (scanf ("%d%d", &n, &m) == 2) { int l = 0, r = 0; for (int i=1; i<=n; ++i) { scanf ("%d", &a[i]); if (l < a[i]) l = a[i]; r += a[i]; } while (l < r) { int mid = (l + r) >> 1; if (check (mid)) r = mid; else l = mid + 1; } printf ("%d\n", l); } return 0; }
相关文章推荐
- static关键字学习总结
- stm32定时器输入捕获pwm
- Android高效布局
- ResourceDictionary.MergedDictionaries 属性wpf
- ZOJ3527
- 如何修改Android系统的版本号
- Distance Queries
- 数据结构实验图论一:基于邻接矩阵的广度优先搜索遍历
- ZOJ - 2186 Keep on Truckin'
- mysql jdbc连接
- linux_shell_轮询触发启动脚本
- Android获得Manifest在<meta-data>元件的值
- Storm介绍(一)
- 关于SpringMVC注解的一些补充说明
- Android四大组件之BroadcastReceveier
- Introduction to gaussian filter 高斯滤波器
- html DOCTYPE声明详解
- 二分搜索 POJ 1064 Cable master
- SpringMvc自定义拦截器
- poj 2932 Coneology (扫描线)