CodeForces 604B More Cowbell
2016-02-18 19:54
393 查看
因为读错题没有思路,没能正确求解。题目中说一个箱子最多能装俩,我却没看到。
Description
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 Input
Input
Output
Input
Output
Input
Output
Sample Output
Hint
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}.
AC代码:
Description
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 Input
Input
2 1 2 5
Output
7
Input
4 3 2 3 5 9
Output
9
Input
3 2
3 5 7
Output
8
Sample Output
Hint
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}.
AC代码:
#include <iostream> #include <cstdio> #include <cstdlib> #include <algorithm> #include <cstring> using namespace std; //#define LOCAL #define MAX_N 100000 int BOX[MAX_N]; int main() { #ifdef LOCAL freopen("b:\\data.in.txt", "r", stdin); #endif int n , k; cin >> n >> k; for(int i = 0; i < n; i++) { cin >> BOX[i] ; } //先给ans最大的量 int ans = BOX[ n - 1 ]; if( n <= k) cout << ans << endl ; else { //n > k && n <= 2*k时 int len = n - k ;//记录前向遍历的长度 int j = len ; for(int i = len-1 ; i >= 0 ; i--) { ans = max( ans , BOX[i] + BOX[j++] ); } cout << ans << endl ; } return 0; }
相关文章推荐
- 如何在eclipse中使用pydev插件导入和测试已有代码
- Android 面试题(答案最全)
- LINUX一网卡多IP设置
- 航空连接器、端子
- 使用Gson进行JSON处理
- Huawei Quidway S3900 stp与锐捷不兼容问题
- Understanding Search Methodologies
- how to integrate OPENH264 to webrtc sdk
- CodeForces 600B 二分
- [POJ 2728][最优比率生成树] Desert King
- LeetCode 2. Add Two Numbers 解题报告
- Angular2学习笔记.1、环境部署,基本概念,HelloAngular2
- CentOS7常用设置
- excel.CreateDispatch(_T( Excel.Application ))失败
- git 使用指南
- linux shell数据重定向(输入重定向与输出重定向)详细分析
- .net字符集转换
- android driver开发常见的英文缩写
- Javascript封装
- [BZOJ4407]于神之怒加强版