zoukankan      html  css  js  c++  java
  • [Usaco2010]Chocolate Eating

    5 5
    10
    40
    13
    22
    7

    24
    1
    1
    3
    4
    5

    分析:二分枚举最小值,尽可能让巧克力最晚吃。

    #include <iostream>
    #include <string>
    #include <cstdio>
    #include <cmath>
    #include <cstring>
    #include <algorithm>
    #include <vector>
    #include <queue>
    #include <deque>
    #include <map>
    #define range(i,a,b) for(int i=a;i<=b;++i)
    #define LL long long
    #define rerange(i,a,b) for(int i=a;i>=b;--i)
    #define fill(arr,tmp) memset(arr,tmp,sizeof(arr))
    using namespace std;
    int n,m,val[50005],ans[50005];
    LL sum;
    void init() {
        cin>>n>>m;
        range(i,1,n)cin>>val[i],sum+=val[i];
    }
    bool judge(LL a){
        LL sum=0,cnt=0;
        range(i,1,m){
            while(sum<a&&cnt<=n)sum+=(LL)val[cnt++];
            if(sum<a)return false;
            sum>>=1;
        }
        return true;
    }
    void solve(){
        LL lef=0,ri=sum,tmpans=0;
        while(lef<=ri){
            LL mid=(lef+ri)/2;
            if(judge(mid))tmpans=max(tmpans,mid),lef=mid+1;
            else ri=mid-1;
        }
        cout<<tmpans<<endl;
        LL tsum=0,cnt=0;
        range(i,1,m){
            while(tsum<tmpans&&cnt<=n)tsum+=(LL)val[cnt],ans[cnt]=i,++cnt;
            tsum>>=1;
        }
        range(i,1,n)cout<<(ans[i]?ans[i]:m)<<endl;
    }
    int main() {
        init();
        solve();
        return 0;
    }
    View Code
  • 相关阅读:
    Linux系统NBD驱动安装拓展篇
    关于测试策略,测试方针,测试计划,测试方案的理解
    IE9 以下版本浏览器兼容HTML5的方法,使用的静态资源的html5shiv包:
    数组实现队列
    Python中的文件夹、包、模块、类、函数
    python单元测试框架pytest 和unittest
    Python语法学习笔记
    Appium遇到的问题
    测试质量体系建设
    运营需求测试点
  • 原文地址:https://www.cnblogs.com/Rhythm-/p/9333626.html
Copyright © 2011-2022 走看看