SDNU 1331.Kick Veges' Ass【SDNU2015暑期集训队测验I】【二分法】【8月3】

Kick Veges‘ Ass

Description

有n个菜鸟站成一排,Jason要按顺序虐他们一下。虐第i个菜鸟需要花费掉A[i]点RP,现在Jason打算分k天虐完这些菜鸟。Jason每天的RP总数是固定的,为了使RP最低的时候不会过低导致杯具,他希望这k天中虐菜花费RP最多的一天,花费的RP尽量少。求Jason在花费RP最多那天花费了了多少RP。

Input

第一行两个正整数n,k。

第二行为此数列A[i]。

Output

一个数,为题目所求答案。

Sample Input

5 22 1 3 4 5

Sample Output

9

Hint

n ≤ 100,000, k ≤ n, ai ≤ 10^9

暑假第一次测验,师哥虐我们的题。以前没用二分做过题,真的!

“他希望这k天中虐菜花费RP最多的一天,花费的RP尽量少”说明,这题99%要用二分法了····师哥说,有时候别忽略了那1%的几率。总之,师哥给我们讲了,涨姿势了,代码:

#include<cstdio>
using namespace std;
int f[100010];
int n,k,sum=0,cnt;
int check(int rp){//测试最多RP时,需要几天虐完
    cnt=1;
    int x=rp;
    for(int i=0;i<n;i++){
        if(x>=f[i]) x-=f[i];
        else{
            cnt++;
            x=rp-f[i];
        }
    }
    if(cnt<k) return -1;
    else if(cnt==k)return 0;
    else return 1;
}
int main()
{
    scanf("%d%d",&n,&k);
    for(int i=0;i<n;i++){
        scanf("%d",&f[i]);
        sum+=f[i];
    }
    int left=0,right=sum,RP=(left+right)/2;
    int ha=check(RP);
    while(ha){//寻找答案大致位置
        if(ha==-1) right=RP+1;
        else left=RP-1;
        RP=(right+left)/2;
        ha=check(RP);
    }
    for(int i=left;i<=right;i++){//寻找答案具体位置
        int ah=check(i);
        if(!ah){
            printf("%d\n",i);
            break;
        }
    }
	return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

SDNU 1331.Kick Veges' Ass【SDNU2015暑期集训队测验I】【二分法】【8月3】

时间: 2024-09-28 05:18:28

SDNU 1331.Kick Veges' Ass【SDNU2015暑期集训队测验I】【二分法】【8月3】的相关文章

SDNU 1331.Kick Veges&#39; Ass(二分法)

Description There are n veges stand in line, Albert_s plan to punish them since they are too weak. The picture following below shows one of the veges waiting to be kicked. Now Albert_s plan to kick all the veges on days in order. Since Kick the vege

SDNU 1142.Hello World!【山东省第一届ACM】【7月21】

Hello World! Description We know that Ivan gives Saya three problems to solve (Problem F), and this is the first problem. "We need a programmer to help us for some projects. If you show us that you or one of your friends is able to program, you can p

中国美院五色光软装设计师培训机构暑期班招生

前段时间由中国美院联合五色光教育开办的第八期软装设计师高研班因报名学员太多,超出招生限额.很多学员未能如愿参与高研班的培训.经院方研究决定,中国美院五色光软装高级设计师研修班(暑期班)将于7月8日开班,招生工作提前开始.望广大学员抓紧时间报名,以免到后期因为人数的限制而不能如愿以偿.我们将不断的提高教学水平,提升课程设置,注重软装的理论和实践,打造真正的软装精品培训项目. 软装设计师高研班的课程.是由中国美院艺术设计学院主办,艺术设计研究院承办的官方的软装研修项目,不同于社会上的其它同类项目.课

hdoj1437 -- 天气情况

天气情况 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 707    Accepted Submission(s): 285 Problem Description 如 果我们把天气分为雨天,阴天和晴天3种,在给定各种天气之间转换的概率,例如雨天转换成雨天,阴天和晴天的概率分别为0.4,0.3,0.3.那么在雨天 后的第二天出现雨天,阴

hdu 1864 01背包 最大报销额

http://acm.hdu.edu.cn/showproblem.php?pid=1864 New~ 欢迎“热爱编程”的高考少年——报考杭州电子科技大学计算机学院关于2015年杭电ACM暑期集训队的选拔 最大报销额 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 18562    Accepted Submission(s): 5459

hdu 1429(BFS+状态压缩)

胜利大逃亡(续) Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 7895    Accepted Submission(s): 2795 Problem Description Ignatius再次被魔王抓走了(搞不懂他咋这么讨魔王喜欢)…… 这 次魔王汲取了上次的教训,把Ignatius关在一个n*m的地牢里,并在地牢的某些地方安装了

HDOJ-2047

阿牛的EOF牛肉串 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 29999    Accepted Submission(s): 14095 Problem Description 今年的ACM暑期集训队一共有18人,分为6支队伍.其中有一个叫做EOF的队伍,由04级的阿牛.XC以及05级的COY组成.在共同的集训生活中,大家建立了深

hdu 1284完全背包

http://acm.hdu.edu.cn/showproblem.php?pid=1284 New~ 欢迎“热爱编程”的高考少年——报考杭州电子科技大学计算机学院关于2015年杭电ACM暑期集训队的选拔 钱币兑换问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 7265    Accepted Submission(s): 4268

hdu1879 继续畅通工程

http://acm.hdu.edu.cn/showproblem.php?pid=1879 New~ 欢迎“热爱编程”的高考少年——报考杭州电子科技大学计算机学院关于2015年杭电ACM暑期集训队的选拔 继续畅通工程 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 16603    Accepted Submission(s): 713