poj 3273 (二分法逼近)
来源:互联网 发布:芒果tv mac 离线缓存 编辑:程序博客网 时间:2024/05/16 01:38
Farmer John is an astounding accounting wizard and has realized he might run out of money to run the farm. He has already calculated and recorded the exact amount of money (1 ≤ moneyi ≤ 10,000) that he will need to spend each day over the next N (1 ≤ N ≤ 100,000) days.
FJ wants to create a budget for a sequential set of exactly M (1 ≤ M ≤ N) fiscal periods called "fajomonths". Each of these fajomonths contains a set of 1 or more consecutive days. Every day is contained in exactly one fajomonth.
FJ's goal is to arrange the fajomonths so as to minimize the expenses of the fajomonth with the highest spending and thus determine his monthly spending limit.
Line 1: Two space-separated integers: N and M
Lines 2.. N+1: Line i+1 contains the number of dollars Farmer John spends on the ith day
Lines 2.. N+1: Line i+1 contains the number of dollars Farmer John spends on the ith day
Line 1: The smallest possible monthly limit Farmer John can afford to live with.
7 5100400300100500101400
500
枚举区间最大值,然后用二分法逼近
代码:
#include <iostream>#include <cstdio>#include <cstring>#include <cmath>#include <algorithm>#include <stack>#include <map>#include <set>#include <vector>#include <queue>#define mem(p,k) memset(p,k,sizeof(p));#define rep(i,j,k) for(int i=j; i<k; i++)#define pb push_back#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1#define inf 0x6fffffff#define ll long longusing namespace std;const int mod=1e9+7;char s[2100];int bk[220],f[50000];int n,m,k,minn,maxx,ans,cur;ll x[201000],y[2100];int nex[4][2]={0,1,1,0,0,-1,-1,0};int nextt[101000];int ss(ll mm){ int le=1; ll sum=0; rep(i,0,n){ sum+=x[i];//cout<<sum<<endl; if(sum>mm){ sum=x[i]; le++; } } return le;}ll kmax(ll a,ll b){ return a>b?a:b;}int main(){ while(cin>>n>>m){ maxx=0; rep(i,0,n)scanf("%lld",x+i),maxx=kmax(maxx,x[i]); ll l=maxx,r=1e9+2; while(l<=r){ ll mm=(l+r)>>1; //cout<<l<<' '<<r<<endl; int k=ss(mm); //cout<<l<<" "<<r<<endl; if(k<=m){ r=mm-1; } else l=mm+1; } cout<<l<<endl; } return 0;}//freopen("C:\\Users\\LENOVO\\Desktop\\read.txt","r",stdin);
0 0
- poj 3273 (二分法逼近)
- POJ 3039 搜索??? (逼近)
- poj 3273 二分法
- poj~3273(二分法)
- POJ 3273 二分法穷举
- Poj 2456 Aggressive cows (二分逼近)
- POJ 3104 Drying(二分逼近)
- POJ 3122 Pie(二分逼近)
- POj 3579 Median(二分逼近)
- 【POJ 2456】 (二分法 &&)
- sqart平方根计算的两种方法实现(累加逼近和二分法)
- POJ-3273-Monthly Expense-二分法
- poj 3122 Pie(二分法)
- poj 3685 二分法(边界条件)
- 【POJ 3061】Subsequence(二分法)
- (二分法)【POJ-3104】Drying
- POJ 3273-Monthly Expense(二分法-最小化最高花费)
- POJ 1079 : Ratio - 分数逼近
- Android framework层JNI的使用浅析
- 第一次尝试百度地图POI公交检索
- JavaOOP 日志文件 的操作
- cmake的介绍和使用
- Linux线程挂掉是否影响进程
- poj 3273 (二分法逼近)
- [莫比乌斯反演 伯努利数] BZOJ 2627 JZPKIL
- 简单的匹配Email的正则表达式
- 170402 汇编-分段、实验和复习
- java 核桃的数量
- 101. Symmetric Tree
- 【LeetCode71-80】71目录简化72DP问题73巧妙利用0位置76通用substr问题精妙模板79DFS+回溯
- Android中资源管理机制详细分析
- DEV grid分组