TYVJ1359 收入计划

描述

高考结束后,同学们大都找到了一份临时工作,渴望挣得一些零用钱。从今天起,Matrix67将连续工作N天(1<=N<=100 000)。每一天末他可以领取当天及前面若干天里没有领取的工资,但他总共只有M(1<=M<=N)次领取工资的机会。Matrix67已经知道了在接下来的这N天里每一天他可以赚多少钱。为了避免自己滥用零花钱,他希望知道如何安排领取工资的时间才能使得领到工资最多的那一次工资数额最小。注意Matrix67必须恰好领工资M次,且需要将所有的工资全部领走(即最后一天末需要领一次工资)。

输入格式

第一行输入两个用空格隔开的正整数N和M
    以下N行每行一个不超过10000正整数,依次表示每一天的薪水。

输出格式

输出领取到的工资的最大值最小是多少。

测试样例1

输入

7 5 
100 
400 
300 
100 
500 
101 
400

输出

500

备注

【样例说明】
    采取下面的方案可以使每次领到的工资不会多于500。这个答案不能再少了。
100 400   300 100   500   101   400   每一天的薪水
<------1 <-------2 <---3 <---4 <---5  领取工资的时间
  500       400     500   101   400   领取到的工资

二分,检验答案

//sineMora 2016.7.9
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
using namespace std;
const int maxn = 200005;
int n,m,sum[maxn];
void input(){
    cin>>n>>m;
    int t;
    sum[0] = 0;
    for(int i = 1;i <= n;i++){
        scanf("%d",&t);
        sum[i] = sum[i-1] + t;
    }
}
bool check(int t){
    int left = m-1,add = 0;
    for(int i = 1;i <= n;i++){
        if(sum[i] - sum[i-1] > t){
            return false;
        }
        if(add + sum[i] - sum[i-1] > t){
            left--;
            add = sum[i] - sum[i-1];
        }else{
            add += sum[i] - sum[i-1];
        }
        if(left < 0) return false;
    }
    return true;
}
void div(){
    int lans = 0,rans = sum[n],mans;
    while(lans <= rans){
        mans = (lans + rans) >> 1;
        if(check(mans)){
            rans = mans - 1;

        }else{
            lans = mans + 1;
        }
    }
    if(check(mans)) cout<<mans;
    else cout<<mans + 1;
}
int main(){
    input();
    div();
    return 0;
}

#include<iostream>
#include<cstdio>
using namespace std;
int n,m,a[100001],sum,mx,ans;
bool jud(int x)
{
     int t=0,tot=0;
     for(int i=1;i<=n;i++)
     {
             tot+=a[i];
             if(tot>x){t++;tot=a[i];}
             if(t+1>m)return 0;
             }
     return 1;
 }
int main()
{
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++)
    {
            scanf("%d",&a[i]);
            mx=max(mx,a[i]);
            sum+=a[i];
            }
    int l=mx,r=sum;
    while(l<=r)
    {
               int mid=(l+r)>>1;
               if(jud(mid)){ans=mid;r=mid-1;}
               else l=mid+1;
               }
    printf("%d",ans);
    return 0;
}

时间: 2024-10-18 00:30:44

TYVJ1359 收入计划的相关文章

【TYVJ】1359 - 收入计划(二分)

http://tyvj.cn/Problem_Show.aspx?id=1359 一开始是一眼看出是二分的,因为这里有单调性,因为取钱是一次取完并且是连续的. 所以最优取法就是准备达到某个价值再取.最优里边包含了次优,也就是取不到m次我就能取完就一定能够取m次能够取完,只要在取法那里随便取就行了,保证不超过这个某个价值 于是我们可以二分这个价值,看看能不能最优法取完并且次数小于m. #include <cstdio> #include <cstring> #include <

大神刷题表

9月27日 后缀数组:[wikioi3160]最长公共子串 dp:NOIP2001统计单词个数 后缀自动机:[spoj1812]Longest Common Substring II [wikioi3160]最长公共子串 [spoj7258]Lexicographical Substring Search 扫描线+set:[poj2932]Coneology 扫描线+set+树上删边游戏:[FJOI2013]圆形游戏 结论:[bzoj3706][FJ2014集训]反色刷 最小环:[poj1734

k序列和

二分答案是参数搜索的一个改善.是这样,对于一个问题,如果它的答案具有单调性质(即如果i不可行,那么大于i的解都不可行,而小于i的解有可能可行),进而用二分的方法枚举答案,再判断答案是否可行,直到求到符合条件为止.例如:问题的答案范围是1到w之间的一个整数,求最小解,那么我们设s=1,t=w,之后mid=(s+t)整除2.然后判断当解是mid的时候这个问题能不能解决,如果能解决则和最优解比较,并且范围缩小到s到mid-1之间(因为即使这个范围没有解,那么mid是最小解):如果不能解决问题,则最小解

7、8月刷题总结

准备开学了囧,7.8月刷题记录,以后好来复习,并且还要好好总结! 数据结构: splay: [BZOJ]1503: [NOI2004]郁闷的出纳员(Splay) [BZOJ]1269: [AHOI2006]文本编辑器editor(Splay) [BZOJ]1507: [NOI2003]Editor(Splay) treap: [BZOJ]1862: [Zjoi2006]GameZ游戏排名系统 & 1056: [HAOI2008]排名系统(treap+非常小心) [BZOJ]3224: Tyvj

致首次创业者:如果做到了这三点,想不成功都难(转)

致首次创业者:如果做到了这三点,想不成功都难 2015-12-27 21:14 24人阅读 评论(0) 收藏 举报 分类: 互联网(2) 创业(4) 编者按:Rob Hayes 是 First Round 的合伙人,主要负责投资早期创业项目.经过十几年投资创业项目和自己创业的经历,他对创业有了深入的认识.他在这篇文章中给那些首次创业的创业者们分享了 有关创业的三点经验:全心投入招聘,积极融资.确保公司有足够多的现金流,确保公司有一个长远的目标. Aoron Patzer 曾经走到了事业的十字口路

旅游类APP如何突破重围?

本文转载至桂林锐拓官网http://www.ruituo.net 想了解更多信息请加QQ:3167750573 欢迎转载,转载请注明 旅游市场之大,仅2015年第3季度,中国在线旅游市场交易额就达到1348.74亿元人民币.但是不管市场如何丰满,总有满怀志向的勇敢者参与游戏. 提起在线旅游市场,携程.穷游,booking的名字立马想起在耳边.尤其是携程这些年接连通过出资甚至并购很多例如艺龙.华住集团.华远国旅.途牛.同程.天海邮轮等等本钱端和途径端,前些时间成为了去哪儿的大股东更是导致工作颤动.

EAS融资租赁系统

融资租赁软件(金蝶EAS版)主要面向金融租赁.融资租赁行业,基于金蝶EAS 平台研发,和金蝶EAS财务系统无缝集成,结合金蝶BOS扩展报表平台,提供大量的分析和管理功能,并且可以在后期方便的定制新的报表.软件从承租人信息录入到合同结束,覆盖了整个业务过程,实际了融资租赁业务的全流程管理.既能满足财务管理需求,又能满足业务管理需求,以支撑企业的快速发展. 秉承"业务财务一体化"的理念,融资租赁软件(EAS版)在行业内多家客户得以应用,软件功能界面操作简单,并提供大量的分析管理报表,真正实

创新与创业管理

第1章 创业与创业思维 第一部分本章概要 1.1 重点概念 1. 创业:创业是不拘泥于当前资源条件的限制下对机会的追寻,组合不同的资源以利用和开发机会并创造价值的过程. 2. 创业过程:考察创业者在新企业创建情境下开展的活动,关注创业者做了什么,包括:产生创业动机.识别创业机会.整合资源.创建新企业或是新事业.实现机会价值.收获回报等六个方面. 3. 创业活动:主要指创业者及其团队为孕育和创建新企业或新事业而采取的行动,包括新企业的生存和初期发展阶段的活动. 3. 机会型创业:指在发现或创造新的

DB-MD:MD/主数据

ylbtech-DB-MD:MD/主数据 主数据(MD Master Data)指系统间共享数据(例如,客户.供应商.账户和组织部门相关数据).与记录业务活动,波动较大的交易数据相比,主数据(也称基准数据)变化缓慢.在正规的关系数据模型中,交易记录(例如,订单行项)可通过关键字(例如,订单头或发票编号和产品代码)调出主数据.主数据必须存在并加以正确维护,才能保证交易系统的参照完整性. 1.返回顶部 1. 中文名:主数据 外文名 MD Master Data 基    于:组织或配置指标的维度或层