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
  • 相关阅读:
    C# 工厂
    sql server 数据库 数据DateTime 转mysql
    java 快捷工具,如何清理不需要的引用
    动态调用webservice 接口
    动态调用wcf接口服务
    下载图片出现问题
    jQuery Validation Engine 表单验证
    mvc5 知识点01
    mvc5 @RenderSection("scripts", required: false) 什么意思
    mvc5 _ViewStart.cshtml 模板页如何定义
  • 原文地址:https://www.cnblogs.com/Rhythm-/p/9333626.html
Copyright © 2011-2022 走看看