POJ 3272 Monthly Expense 二分
来源:互联网 发布:java邮件中添加超链接 编辑:程序博客网 时间:2024/06/03 23:04
来源:http://poj.org/problem?id=3273
题意:给你n个数,让分成m组,每组必须是连续的一些数,求每组的和的最大值最小。
思路:二分枚举答案。上界是n个数的和,也就是分成1组的情况,下界是n个数里面的最大值,也就是分成m组的情况,然后看mid = (rp + lp) / 2 能够把n个数分成多少组。其是就是二分枚举求下限的过程。
代码:
#include <iostream>#include <cstdio>#include <string.h>using namespace std;typedef long long LL;const int N = 100010;int num[N];#define CLR(arr,val) memset(arr,val,sizeof(arr))int main(){int n,m;while(scanf("%d%d",&n,&m) != EOF){LL value = 0;int mmax = 0; for(int i = 0; i < n; ++i){ scanf("%d",&num[i]); if(mmax < num[i]) mmax = num[i]; value += num[i]; } LL lp = mmax, rp = value,ans = 0; while(lp < rp){ int cnt = 0; LL mmid = (lp + rp) / 2; LL sum = 0; for(int i = 0; i < n; ++i){ sum += num[i]; if(sum > mmid){ cnt++;sum = num[i]; } } if(cnt < m){ rp = mmid; } else lp = mmid + 1; } printf("%lld\n",lp);}return 0;}
- POJ 3272 Monthly Expense 二分
- poj 3273 二分 Monthly Expense
- POJ 3723 Monthly Expense 二分
- poj 3273 二分 monthly expense
- poj-3273-Monthly Expense-二分
- POJ 3273 Monthly Expense(二分)
- POJ 3273 Monthly Expense(二分)
- poj 3273 Monthly Expense (二分)
- POJ 3273 Monthly Expense (二分)
- POJ - 3273 Monthly Expense 二分
- POJ 3273 Monthly Expense(二分)
- POJ 3273:Monthly Expense(二分)
- 【POJ 3273】 Monthly Expense (二分)
- poj 3273 Monthly Expense 【二分】
- poj 3273 Monthly Expense (二分)
- POJ 3273 Monthly Expense 二分
- POJ 3273 Monthly Expense(二分)
- 【poj 3273】 Monthly Expense 二分
- Handler初探
- BMP文件格式(转)
- 实训总结
- Android 登录对话框 实现
- DiskFileUpload类
- POJ 3272 Monthly Expense 二分
- java多线程总结
- libsvm
- printf的使用技巧
- 台湾银行业将开展人民币清算业务
- LDA参考资料
- Android 打造自己的个性化应用(四):仿墨迹天气实现-->自定义扩展名的zip格式的皮肤
- 黑马程序员之WinForm编程基础学习笔记:输入宽和高,输出面积。
- Struts2请求处理流程及源码分析