Poj 3273 Monthly Expense(二分)
来源:互联网 发布:曹云金 知乎 编辑:程序博客网 时间:2024/05/17 00:09
题目地址:http://poj.org/problem?id=3273
思路:二分最小值x(1--sum{a[i]})。从小到大依次相加,判断当前数量是否大于x,若大于则num++,最终若num不大于m,则该x可行。
#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;const int maxn=1e5+50;int n,m;int a[maxn];int check(int x){ int num=0; for(int i=1,j;i<=n;i=j+1) { j=i,num++; int tmp=a[j]; if(a[i]>x) return 0; while(j+1<=n&&tmp+a[j+1]<=x) { if(a[j]>x) return 0; tmp+=a[j+1],j++; } } return num<=m;}int main(){ while(scanf("%d%d",&n,&m)!=EOF) { int sum=0; for(int i=1;i<=n;i++) { scanf("%d",&a[i]); sum+=a[i]; } int l=0,r=sum,ans; while(l<=r) { int mid=(l+r)>>1; if(check(mid)) { ans=mid; r=mid-1; } else { l=mid+1; } } printf("%d\n",ans); } return 0;}
0 0
- 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
- poj-3273-Monthly Expense-二分
- POJ 3273 Monthly Expense(二分)
- POJ 3273 Monthly Expense(二分)
- linux静态库与共享库
- mybatis-generator
- 用java实现对数据库的增删改查
- 剑指Offer_3_二维数组中的查找
- 3月1日 日常填坑(二)
- Poj 3273 Monthly Expense(二分)
- 剑指Offer_4_替换空格
- 初谈Java集合
- XML序列化与反序列化
- HTML5五子棋游戏 画面超酷 可设置难度
- 剑指Offer_4Extra_合并两个有序数组
- Java三大特性之多态
- 和为0的四个值
- shell学习笔记3.14