【题解】探险

题目描述

n个同学一起去探险,现在把n个同学分成k个小组,每个小组完成一项探险任务。分组时,如果第i人到第j人分在同一组(i小于j),则他们之间的所有人(第i+1,i+2,...,j-1个)也必须在同一个小组中。

一个小组内所有人的体力和越小,途中可能越危险。为了确保每个同学的安全,要求分组时,使得所有小组中,体力和最小的那个小组的所有人的体力和尽量大。

依次告诉你每个人的体力,如何分组呢?

输入输出格式

输入格式

第一行,两个正整数n和k,互相之间以一个空格分隔。

第2行,n个正整数(互相以一个空格分隔),表示n个人的体力值。其中第j个整数表示第j个人的体力值。

输出格式

一行,该行只有一个整数,表示最佳划分方案中,最弱的小组中,所有人的体力值之和。

输入输出样例

输入样例一

5 2

5 2 1 6 9

输出样例一

9

输入样例二

5 3

5 2 1 6 9

输出样例二

7

输入样例三

5 4

5 2 1 6 9

输出样例三

3

说明

样例说明

共有5个人,他们的体力值分别为:5、2、1、6、9。

(1)分成2个小组时,第1小组由前4个人组成,第2小组由第5个人单独组成,此时最弱小组的体力和为9(其它划分方案时最弱小组的体力和都小于9)。

(2)分成3个小组时,第1小组由前2个人组成,第2小组由第3、第4两人组成,第3小组由第5个人单独组成,此时最弱小组的体力和为7(其它划分方案时最弱小组的体力和都小于7)。

(3)分成4个小组时,第1小组由第1个人组成,第2小组由第2、3两人组成,第3小组由第4人组成,第4小组由第5人组成,此时最弱小组的的体力和为3(其它划分方案时最弱小组的体力和都小于3)。

数据规模

50%的数据,1≤k≤3;

80%的数据,1≤k≤100,1≤n≤300;

100%的数据,1≤n≤30000,1≤k≤1000,k≤n,每个人的体力值不大于10000。

题解

二分答案模板题,枚举人数即可,注意是求最小的最大。

#include<iostream>

using namespace std;

int n,k;
int a[30005];
int ans;

int main()
{
    cin>>n>>k;
    for(int i=1;i<=n;i++)
    {
        cin>>a[i];
        a[i]+=a[i-1];
    }

    for(int low=0,high=a[n]+1,mid=0,last=0,num=0;low+1<high;last=0,num=0)
    {
        mid=(low+high)/2;
        for(int i=1;i<=n;i++)
        {
            if(a[i]-a[last]>=mid)
            {
                num++;
                last=i;
            }
        }
        if(num<k)
        {
            high=mid;
        }
        else if(num>k)
        {
            low=mid;
        }
        else
        {
            low=mid;
            if(mid>ans) ans=mid;
        }
    }

    cout<<ans;

    return 0;
} 

参考程序

原文地址:https://www.cnblogs.com/kcn999/p/10354747.html

时间: 2024-08-29 13:46:04

【题解】探险的相关文章

bzoj2246: [SDOI2011]迷宫探险

2246: [SDOI2011]迷宫探险 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 202  Solved: 118[Submit][Status][Discuss] Description 这是一个单人游戏. 游戏开始时,玩家控制的人物出生在迷宫的某个位置,玩家的目标是控制人物走到迷宫的某个出口(出口可能有多个).迷宫里有k类陷阱(用"A"."B"."C"--表示,相同字母代表相同类型的陷阱

[网络流专练6][线性规划与网络流剩余部分题解]

orz"orzGEOTCBRL" 6:lis 给定正整数序列x1 ,…… , xn. (1)计算其最长递增子序列的长度s. (2)计算从给定的序列中最多可取出多少个长度为s的递增子序列. (3)如果允许在取出的序列中多次使用x1和xn,则从给定序列中最多可取出多少个长 度为s的递增子序列.  看到题目就666了,前两问不是经典dp?因为序列是上升的,所以如果在x1前面加一个x1,个数显然多了f[x2][xn][s-1],或者xn后面加一个xn, 一样的……然后发现题意理解错T_T “多

POJ 2431 Expedition(探险)

Time Limit: 1000MS   Memory Limit: 65536K [Description] [题目描述] A group of cows grabbed a truck and ventured on an expedition deep into the jungle. Being rather poor drivers, the cows unfortunately managed to run over a rock and puncture the truck's f

vijos1082丛林探险

P1082丛林探险 描述 东非大裂谷中有一片神秘的丛林,是全世界探险家的乐园,著名黄皮肤探险家BB一直想去试试.正好我国科学家2005年4月将首次对东非大裂谷进行科考,BB决定随科考队去神秘丛林探险.在出发之前,他搜集了国内外有关神秘丛林探险的资料,并绘制成一张地图:该地图上有若干安全点(包括入口点和出口点),并将这些安全点编号为1.2.….n:如果一个安全点和另一个安全点有一条路直接相通,则用一条边标示:该图是一个连通图(任意两点间有至少一条路径),地图上每条路的长度和走这条路需要耗费的体力都

2014年百度之星 资格赛题解

比赛地址 1001: Energy Conversion Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 7787 Accepted Submission(s): 1894 Problem Description 魔法师百小度也有遇到难题的时候-- 现在,百小度正在一个古老的石门面前,石门上有一段古老的魔法文字,读懂这种魔法文字需要耗费大量的

洛谷——T1725 探险

http://codevs.cn/problem/1725/ 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 钻石 Diamond 题解 查看运行结果 题目描述 Description 有编号为1至n的n个同学一起去探险,现在把他们分成k个小组,每个小组完成一项探险任务.分组时,如果第i人与第j人分在同一组(i<j),则他们之间的所有人(第i+1,i+2,…,j-1个)也必须在同一个小组中. 一个小组内所有人的体力和越小,途中可能越危险.为了确保每个同学的安全,要求分组时,使得

2016程设期末伪题解

期末发挥实在是太差了-_-# 比2015年少了好多送分题,整体难度显得很大,但是考完之后静下来做又觉得并不是很难orz 1. 篮球联赛:暴力枚举(我用的dfs来枚举) 2. 夺宝探险:暴力dfs 3. 寻找边缘:从边缘暴力dfs 4. 猴子摘桃:可以直接用两个指针指向区间端点做到O(n) 5. 分形盒:直接递归 6. 42点:暴力dfs遍历所有结果 以上几题就不放代码了 7. 上机:dp 题意:有 n 个座位排成一排(1<=n<=10000),给定坐到每个座位上两边有0个.1个和2个人时可获得

【BZOJ2407/4398】探险/福慧双修 最短路建模

[BZOJ2407]探险 Description 探险家小T好高兴!X国要举办一次溶洞探险比赛,获奖者将得到丰厚奖品哦!小T虽然对奖品不感兴趣,但是这个大振名声的机会当然不能错过! 比赛即将开始,工作人员说明了这次比赛的规则:每个溶洞和其他某些溶洞有暗道相连.两个溶洞之间可能有多条道路,也有可能没有,但没有一条暗道直接从自己连到自己.参赛者需要统一从一个大溶洞出发,并再次回到这个大溶洞. 如果就这么点限制,那么问题就太简单了,可是举办方又提出了一个条件:不能经过同一条暗道两次.这个条件让大家犯难

bzoj2407 探险 (重构图 + 最短路)

2407: 探险 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 148  Solved: 84[Submit][Status][Discuss] Description 探险家小T好高兴!X国要举办一次溶洞探险比赛,获奖者将得到丰厚奖品哦!小T虽然对奖品不感兴趣,但是这个大振名声的机会当然不能错过! 比赛即将开始,工作人员说明了这次比赛的规则:每个溶洞和其他某些溶洞有暗道相连.两个溶洞之间可能有多条道路,也有可能没有,但没有一条暗道直接从自己连到