Codeforces 604B:More Cowbell
来源:互联网 发布:加工中心手工编程教材 编辑:程序博客网 时间:2024/05/15 17:35
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.
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.
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.
2 12 5
7
4 32 3 5 9
9
3 23 5 7
8
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}.
题意是一堆东西,放入一堆箱子中。给出了东西的数量和箱子的数量,并且给出了东西从小到大的体积。然后已经说明了最多把两个东西放在一个箱子中。箱子能放入东西的条件是箱子的体积大于等于放入东西的总的体积。
考虑不同种情况,贪心。
代码:
#pragma warning(disable:4996) #include <iostream> #include <algorithm> #include <cmath> #include <vector> #include <string> #include <cstring>#include <queue>#include <map>using namespace std;typedef long long ll;int n, k;int val[100005];int main(){ //freopen("i.txt", "r", stdin); //freopen("o.txt", "w", stdout); int i, j; int cn, yn; int res = 0; scanf("%d%d", &n, &k); for (i = 1; i <= n; i++) { scanf("%d", &val[i]); } cn = n / k; yn = n%k;if(n<=k)//如果东西的数目比箱子数少{ cout << val[n] << endl;//取最大值} else if (cn == 1&&yn==0)//如果东西的数目和箱子数相等 { cout << val[n] << endl;//取最大值 } else if (cn == 1 && yn)//有一部分的东西要两个放在一起 { res = val[n]; for (i = 1; i <= yn; i++) { res = max(res, val[i] + val[2 * yn - i + 1]); } cout << res << endl; } else//所有东西都要两个放在一起 { res = val[n]; for (i = 1; i <= n/2; i++) { res = max(res, val[i] + val[n - i + 1]); } cout << res << endl; } //system("pause"); return 0;}
- codeforces 604B More Cowbell
- Codeforces 604B:More Cowbell
- CodeForces 604B More Cowbell
- CodeForces 604B More Cowbell
- codeforces-604B More Cowbell(贪心)
- 【31.72%】【codeforces 604B】More Cowbell
- CodeForces 604 B.More Cowbell(贪心)
- codeforces B - More Cowbell (贪心)
- Codeforces Round #334 (604B) More Cowbell [贪心]
- Codeforces Round #334 (Div. 2) B. More Cowbell
- Codeforces Round #334 (Div. 2) B. More Cowbell
- Codeforces Round #334 B. More Cowbell (二分 + 贪心)
- Codeforces Round #334 (Div. 2) B. More Cowbell
- Codeforces Round #334 (Div. 2) B. More Cowbell
- Codeforces Round #334 (Div. 2) B. More Cowbell
- Codeforces Round #334 (Div. 2) B. More Cowbell
- Codeforces Round #334 (Div. 2) B. More Cowbell (贪心)
- Codeforces Round #334 (Div. 2) B. More Cowbell
- ios 中请求主线程刷新UI
- 游戏作弊器制作教程四:用API读写内存
- HBase 笔记客户端API基础知识 -- 3
- Valid Anagram 有效的字谜
- C++字符串转整型
- Codeforces 604B:More Cowbell
- 书签打印Word文档,包含单选复选框之类
- 【c++】为什么类的定义中不能包含其自身类型,但是能包含其自身的指针或引用类型
- 【转】CSS 专业技巧收集
- c语言实现HACK汇编编译器(一)
- (MongoDB系列之合并MongoDB子文档
- 传值方式(正向传值) 代理 block块 通知
- Swift UIButton 和 UILabel 的详细解释和创建使用
- 机器学习之KNN算法