zoukankan      html  css  js  c++  java
  • 【二分答案】BZOJ2016-Chocolate Eating

    【题目大意】

    n块巧克力,每次吃可以增加ai点快乐,每天早晨睡觉起来快乐值会减半,求如何使d天睡觉前的最小快乐值最大。

    【思路】

    二分每天的最小快乐值,只要没有达到快乐值就继续吃。

    不知道为什么了WA了8发..8发??!!!!说好的水题呢??!!!而且我也不知道哪里错了反正突然AC了??!!

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<algorithm>
     5 using namespace std;
     6 const int MAXN=100000+50;
     7 typedef long long ll;
     8 int n,d;
     9 ll h[MAXN];
    10 ll ans[MAXN],tmp[MAXN];
    11 ll ansx;
    12 
    13 void init()
    14 {
    15     scanf("%d%d",&n,&d);
    16     for (int i=1;i<=n;i++) scanf("%lld",&h[i]);
    17 } 
    18 
    19 int check(ll x)
    20 {
    21     int j=1;
    22     ll sum=0;
    23     for (int i=1;i<=d;i++)
    24     {
    25         while (sum<x && j<=n)
    26         {
    27             tmp[j]=i;
    28             sum+=h[j++];
    29         } 
    30         if (sum<x) return 0;
    31         sum>>=1;
    32     }
    33     while (j<=n) tmp[j++]=d;
    34     for (int i=1;i<=n;i++) ans[i]=tmp[i];
    35     ansx=x;
    36     return 1;
    37 }
    38 
    39 void solve()
    40 {
    41     ll lb=1,ub=50000000000ll;
    42     while (lb<=ub)
    43     {
    44         ll mid=(lb+ub)>>1;
    45         if (check(mid)) lb=mid+1;else ub=mid-1;
    46     }
    47     printf("%lld
    ",ansx);
    48     for (int i=1;i<=n;i++) 
    49         printf("%lld
    ",ans[i]); 
    50 }
    51 
    52 int main()
    53 {
    54     init();
    55     solve();
    56     return 0;
    57 } 
  • 相关阅读:
    Vue的条件渲染详解
    Vue的style绑定
    Vue的class绑定总结
    v-model详解
    MUI手势锁
    mysql主从搭建
    处理绿盟科技安全评估的系统漏洞
    微信小程序发送ajax
    微信小程序上拉下拉刷新
    微信小程序覆盖自定义组件样式
  • 原文地址:https://www.cnblogs.com/iiyiyi/p/5772612.html
Copyright © 2011-2022 走看看