zoukankan      html  css  js  c++  java
  • CF div2 334 B

    B. More Cowbell
    time limit per test
    2 seconds
    memory limit per test
    256 megabytes
    input
    standard input
    output
    standard output

    Kevin Sun wants to move his precious collection of n cowbells from Naperthrill to Exeter, where there is actually grass instead of corn. Before moving, he must pack his cowbells into k boxes of a fixed size. In order to keep his collection safe during transportation, he won't place more than two cowbells into a single box. Since Kevin wishes to minimize expenses, he is curious about the smallest size box he can use to pack his entire collection.

    Kevin is a meticulous cowbell collector and knows that the size of his i-th (1 ≤ i ≤ n) cowbell is an integer si. In fact, he keeps his cowbells sorted by size, so si - 1 ≤ si for any i > 1. Also an expert packer, Kevin can fit one or two cowbells into a box of size s if and only if the sum of their sizes does not exceed s. Given this information, help Kevin determine the smallest s for which it is possible to put all of his cowbells into k boxes of size s.

    Input

    The first line of the input contains two space-separated integers n and k (1 ≤ n ≤ 2·k ≤ 100 000), denoting the number of cowbells and the number of boxes, respectively.

    The next line contains n space-separated integers s1, s2, ..., sn (1 ≤ s1 ≤ s2 ≤ ... ≤ sn ≤ 1 000 000), the sizes of Kevin's cowbells. It is guaranteed that the sizes si are given in non-decreasing order.

    Output

    Print a single integer, the smallest s for which it is possible for Kevin to put all of his cowbells into k boxes of size s.

    Sample test(s)
    input
    2 1
    2 5
    output
    7
    input
    4 3
    2 3 5 9
    output
    9
    input
    3 2
    3 5 7
    output
    8
    Note

    In the first sample, Kevin must pack his two cowbells into the same box.

    In the second sample, Kevin can pack together the following sets of cowbells: {2, 3}, {5} and {9}.

    In the third sample, the optimal solution is {3, 5} and {7}.

    给你N个按体积升序排列的球,有K个盒子,每个盒子里面最多装2个球。求使得让N个球按照要求装入K个盒子时,盒子容量最小的值。

    贪心,首先当k>=N时 答案就是体积最大球,当k<N时,有的盒子需要装入两个球,有的盒子需要装一个。那么能得到需要装一个球的有2K-N个,那么剩下的球需要两两装入一个盒子,这样的球有n-(2k-n)=2n-2k;

    然后贪心的去合并两个球 最小的球和最大球合并,一直循环下去,找到一个最大值就是满足条件的答案。

     1 #include <cstdio>
     2 #include <cstring>
     3 #include <iostream>
     4 #include <queue>
     5 #include <vector>
     6 #include <stack>
     7 #include <cmath>
     8 
     9 using namespace std;
    10 
    11 const int M = 10005;
    12 const int maxn = 1000000;
    13 typedef long long LL;
    14 
    15 vector<int>G[maxn];
    16 queue<int>Q;
    17 stack<int>st;
    18 
    19 
    20 LL a[maxn];
    21 
    22 int main()
    23 {
    24 
    25   int n,k;
    26   cin>>n>>k;
    27   LL res = 0;
    28   for(int i=0;i<n;i++){
    29     cin>>a[i];
    30     res = max(res,a[i]);
    31   }
    32   for(int i=0;i<n-k;i++){
    33     res = max(res,a[i]+a[2*(n-k)-i-1]);
    34   }
    35   cout << res;
    36 
    37 
    38     return 0;
    39 }
    View Code
  • 相关阅读:
    Python基础语法 第2节课(数据类型转换、运算符、字符串)
    python基础语法 第5节课 ( if 、 for )
    python基础语法 第4节课 (字典 元组 集合)
    Python基础语法 第3节课 (列表)
    A. Peter and Snow Blower 解析(思維、幾何)
    C. Dima and Salad 解析(思維、DP)
    D. Serval and Rooted Tree (樹狀DP)
    C2. Balanced Removals (Harder) (幾何、思維)
    B. Two Fairs 解析(思維、DFS、組合)
    D. Bash and a Tough Math Puzzle 解析(線段樹、數論)
  • 原文地址:https://www.cnblogs.com/lmlyzxiao/p/5019091.html
Copyright © 2011-2022 走看看