第十四周 11.30---12.6

---------12.2

cf 又滚粗

cf 604 b

http://codeforces.com/contest/604/problem/B

给出 n 个物品,每个物品的体积是 s[i],现在把它们装进 k 个盒子里面,每个盒子里面最多装两个物品

问盒子的最小体积(每个物品的体积按照升序给出的)

二分盒子的体积,但是以为是只有相邻的两个物品可以放进同一个盒子里面

所以被hack

一直想不通

hack 点是

4 2

1 5 5 9

应该是 10

应该依次考虑有没有物品能够和当前最大的一起放,

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<iostream>
 4 #include<algorithm>
 5 using namespace std;
 6 
 7 const int INF = (1<<30)-1;
 8 const int maxn = 1e6+5;
 9 int s[maxn],n,k;
10 int flag[maxn];
11 int cnt;
12 
13 int ok(int x){
14     cnt = 0;
15     if(x <s[n]) return 0;
16     int i = 1,j = n;
17     for(;i <= j;){
18         if(i == j) {
19             cnt++;
20             j--;
21         }
22        else  if((s[i]+s[j]) <= x){
23             i++;
24             j--;
25             cnt++;
26         }
27         else {
28             j--;
29             cnt++;
30         }
31     }
32 
33 //printf("cnt = %d  x = %d\n",cnt,x);
34     return cnt <= k;
35 }
36 
37 int lb,ub,mid;
38 
39 void solve(){
40     int ans = INF;
41     ub = 2000000;
42     s[n+1] = INF;
43     for(int i = 0;i <= 100;i++){
44         mid = (lb+ub)/2;
45         if(ok(mid)){
46             ub = mid;
47             ans = min(ans,mid);
48         }
49         else lb = mid+1;
50     //   printf("lb = %d  ub = %d  mid = %d  ans = %d\n",lb,ub,mid,ans);
51     }
52     printf("%d\n",ans);
53 }
54 
55 int main(){
56     while(scanf("%d %d",&n,&k) != EOF){
57             memset(s,0,sizeof(s));
58             lb = INF;
59         for(int i = 1;i <= n;i++) scanf("%d",&s[i]),lb = min(lb,s[i]);
60         solve();
61     }
62     return 0;
63 }
View Code

 

好sb阿,,,没事,,干巴爹阿---------

转载于:https://www.cnblogs.com/wuyuewoniu/p/5011825.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值