Codeforces Round #334 (Div. 2) B. More Cowbell (贪心)
2015-12-30 14:47
507 查看
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
output
input
output
input
output
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个箱子,一个箱子能放两个东西,东西有重量,一个箱子里面东西的重量就是他的容量,求最小容量方法中的最大容量
思路:分情况:如果n<=k,那么ans为a
,如果n>k,那么就要贪心了,选取前n-k个东西,然后将其倒序插入剩余的东西中,过程中取最大值即可
总结:这道题改了不少,一开始没看到一个箱子只能装两个东西,然后又理解有误,WA了好多,最后把自己绕晕了,好久才改对。衰= =
ac代码:
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个箱子,一个箱子能放两个东西,东西有重量,一个箱子里面东西的重量就是他的容量,求最小容量方法中的最大容量
思路:分情况:如果n<=k,那么ans为a
,如果n>k,那么就要贪心了,选取前n-k个东西,然后将其倒序插入剩余的东西中,过程中取最大值即可
总结:这道题改了不少,一开始没看到一个箱子只能装两个东西,然后又理解有误,WA了好多,最后把自己绕晕了,好久才改对。衰= =
ac代码:
#include<stdio.h> #include<math.h> #include<string.h> #include<stack> #include<queue> #include<vector> #include<iostream> #include<algorithm> #define MAXN 100100 #define LL long long #define ll __int64 #define INF 0xfffffff #define mem(x) memset(x,0,sizeof(x)) #define PI acos(-1) using namespace std; int a[MAXN]; int main() { int n,k,i,j; int ans; while(scanf("%d%d",&n,&k)!=EOF) { for(i=0;i<n;i++) scanf("%d",&a[i]); if(n<=k) { printf("%d\n",a[n-1]); continue; } ans=a[n-1]; int cnt=n-k; int j=cnt; for(i=cnt-1;i>=0;i--) ans=max(ans,a[i]+a[j++]); printf("%d\n",ans); } return 0; }
几组测试数据:
2 1 2 54 3 2 3 5 92 1 2 53 2
3 5 76 3
1 2 3 4 5 6
5 3
1 1 2 2 84 2
1 2 3 5
相关文章推荐
- HTML修改鼠标样式
- BugPhobia开发篇章:Beta阶段第IX次Scrum Meeting
- Flume安装测试
- 本地推送.极光推送.APNs推送
- BugPhobia开发篇章:Beta阶段第IX次Scrum Meeting
- Windows创建用户定义的服务(srvany.exe和instsrv.exe )
- 命令行的艺术
- OC基础概念理解—多态
- IOS-自动布局详解
- android中ViewPage使用的细节问题
- Winsock 编程流程
- 实验四 主存空间的分配和回收模拟
- data类型的Url格式及Base64编码:把小数据直接嵌入到Url中
- 「拼房」你敢吗?这款App这样玩「陌生人社交」
- 深入剖析 JavaScript 的深复制
- js如何知道checkbox是否被选中,并且选中的话让input元素变为不可编辑
- html5游戏开发,弹球小游戏!!!
- SublimeText3 安装和配置,以及配置 Python 环境
- Eclipse设置打印线
- 2015年直通车新玩法,你知道嘛!!