poj 3273 Monthly Expense(二分穷举)
2013-02-20 20:23
253 查看
题目:http://poj.org/problem?id=3273
题意:把n天分为m组,每组的天数是连续的,求每组花费之和最小
二分穷举,把花费的最大值和最小值求出,对其进行二分,从而求出符合要求的最小花费
View Code
题意:把n天分为m组,每组的天数是连续的,求每组花费之和最小
二分穷举,把花费的最大值和最小值求出,对其进行二分,从而求出符合要求的最小花费
View Code
#include <iostream> #include<cstdio> using namespace std; int a[100010]; int n,m; int juge(int mid) { int sum=0; int num=1; int i; for(i=0;i<n;i++) { if(sum+a[i]<=mid) sum+=a[i]; else { sum=a[i]; num++; if(num>m) return 0; } } return 1; } int main() { scanf("%d %d",&n,&m); int i; int low=0; int high=0; for(i=0;i<n;i++) { scanf("%d",&a[i]); high+=a[i]; if(a[i]>low) low=a[i]; } int mid; while(low<high) { mid=(low+high)/2; if(juge(mid))//如果mid可以将n分成m组,证明所求值在low到mid之间 high=mid-1; else low=mid+1; } mid=(low+high)/2; cout<<mid<<endl; return 0; }
相关文章推荐
- POJ 3273 Monthly Expense 二分穷举
- poj_3273 Monthly Expense(二分穷举)
- poj 3273- Monthly Expense(最大值最小化)-二分
- POJ 3273 Monthly Expense(二分)
- POJ3273 Monthly Expense 二分
- poj 3273 Monthly Expense (二分)
- POJ 3273 Monthly Expense(二分)
- POJ 3273 Monthly Expense(二分查找)
- poj 3273 Monthly Expense (二分)
- poj 3273/1064/2456 二分答案(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 二分->最大化最小值
- poj3273 Monthly Expense(二分)
- poj 3273 Monthly Expense(贪心+二分)
- poj 3273 二分 monthly expense
- 【poj 3273】 Monthly Expense 二分