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
  • 相关阅读:
    python_16(bootstrap)
    python_15(jquery)
    python_14(js)
    .net 定义泛型方法解析XML数据赋值给相应对象
    SQL Server 数字字符串位数不够补0
    SQL Server 跨服务器查询
    JQ1.5 为动态追加的元素添加事件
    radio group 的change 事件
    记录兼职工作中遇到的问题-IIS 服务器站点无法启动
    记录第一份工作的最后一次需求-百分比环形进度条
  • 原文地址:https://www.cnblogs.com/Rhythm-/p/9333626.html
Copyright © 2011-2022 走看看