Codeforces Round #334 (Div. 2) B. More Cowbell
来源:互联网 发布:淘宝有意思的店铺 编辑:程序博客网 时间:2024/05/17 09:16
题目链接:http://codeforces.com/contest/604/problem/B
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 intok boxes of a fixed size. In order to keep his collection safe during transportation, he won't place more thantwo 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 integersi. In fact, he keeps his cowbells sorted by size, sosi - 1 ≤ si for anyi > 1. Also an expert packer, Kevin can fit one or two cowbells into a box of sizes if and only if the sum of their sizes does not exceeds. Given this information, help Kevin determine the smallests for which it is possible to put all of his cowbells intok 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 integerss1, 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 intok 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}.
二分+贪心
题意:n个物品放入k个盒子中,每个盒子最多放入两个物品,要求物品权值小于盒子的权值才能放入,求将物品全部放入盒子时盒子的最小权值是多少。
数据:(1 ≤ n ≤ 2·k ≤ 100 000)
解题方法:二分+贪心
#include<stdio.h>#include<algorithm>using namespace std;long long int s[100100],n,k;int check(int x){ long long int xx=1,yy=n,ans=0,i; for(i=1;i<=n;i++) if(x<s[i]) return 0;//单个物品超过x显然是不合理的 while(1) { if(xx>yy) break; if(s[xx]+s[yy]>x) { yy--;ans++; }//如果两个物品相加大于x,那么这个大物品单独放在一个盒子里 else { ans++; xx++;yy--; } } if(ans<=k) return 1; else return 0;}int main(){ long long int i,j; while(scanf("%lld%lld",&n,&k)!=EOF) { for(i=1;i<=n;i++) scanf("%lld",&s[i]); long long int l=1,r=2*1000000,mid; while(l<=r) { mid=(r+l)/2; if(check(mid)) r=mid-1; else l=mid+1; } printf("%lld\n",l);//注意输出的是l }}
- 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
- 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)-More Cowbell(贪心模拟)
- Codeforces Round #334 (604B) More Cowbell [贪心]
- Codeforces Round #334 B. More Cowbell (二分 + 贪心)
- 【Codeforces Round 334 (Div 2)B】【贪心】More Cowbell n个物品装进m个箱子,每个箱子最多放2个物品 要求箱子空间尽可能小
- codeforces 604B More Cowbell
- Codeforces 604B:More Cowbell
- codeforces B - More Cowbell (贪心)
- CodeForces 604B More Cowbell
- GridView网格视图
- ARM裸机开发学习方法
- leetcode -- Longest Substring Without Repeating Characters -- 简单要知道思路
- 定制eclipse的代码提示
- $.grep()函数详解——JQuery
- Codeforces Round #334 (Div. 2) B. More Cowbell
- 关于Oracle有两个或者多个实例时,用SID来区分目前oralce使用的是哪个实例。
- SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)
- struts2如何获取Request-Session-ServletContext-Response
- UI之textField、Button的创建方法及各属性
- ARM裸机开发快速体验
- java反射的性能问题
- linux ffplay 生成
- http://www.cnblogs.com/kaituorensheng/p/3814925.html