[7.8]烤鱼

小x掉到了一个jzyz的窨井里,这口井很深,没有人能听到小x的呼救,悲催的小x必须要等D天后,学校确认他失踪才会大规模寻找他,而这难熬的D天将是小x这一生最难过的D天。
不过幸运的是小x在井里得到了N (1 <= N <= 50,000) 条鱼,编号1..N.他计划在接下来的D (1 <= D <= 50,000)天按鱼的编号从小到大逐天吃,当然,小x可以一天连续吃多条鱼,也可以不吃。
  为了不浪费,小x要求鱼必须吃完。。并且剩下的鱼必须在最后一天都吃掉。
对于第i条鱼,小x的能量值会增加Hi(1 <= Hi <= 1,000,000)。小x会在白天吃鱼,一旦吃饱,他就会一觉睡到第二天。第二天醒来,她的能量值会变成前一天的能量值的一半(向下取整),小x的能量值是可以累加的。
小x比较注意维护每天能量的平衡,要刻意避免能量的大起大落,于是现在小x想知道,如何安排吃鱼,才能保证能量值最小的那个晚上(假设是第X个晚上),第X个晚上的能量值最大。
例如:有5条鱼,能量值分别是: (10, 40, 13, 22, 7).
小x按以下方式吃鱼,将会得到最优值:

 第几天   醒来时能量值   吃的鱼的能量值     晚上睡觉能量值
  1      0        10+40          50
  2       25         ---           25
  3       12          13           25
  4       12          22           34 
  5       17           7           24
可以看出,第1天吃了鱼1、鱼2,第2天不吃鱼,第3天吃了鱼3,第4天吃了鱼4,第5天吃了鱼5。 那么在这5个晚上,能量值最低的是第5个晚上,能量值是24,所以输出24。然后你还要输出第I (1<=i<=N)条鱼是小x第几天吃掉的.

题解:二分答案;

#include<iostream>
#include<cstring>
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<iomanip>
#include<map>
#include<set>
#include<vector>
#include<ctime>
#include<cmath>
#define LL long long
using namespace std;
#define LL long long
#define up(i,j,n) for(int i=(j);(i)<=(n);(i)++)
#define max(x,y) ((x)<(y)?(y):(x))
#define min(x,y) ((x)<(y)?(x):(y))
#define FILE "1"
namespace OI{
    const int maxn=51000;
    const LL inf=1000000000000LL;
    LL a[maxn],v[maxn],c[maxn],n,m;
    void init(){
        freopen("1.in","r",stdin);
        freopen("1.out","w",stdout);
        scanf("%d%d",&m,&n);
        up(i,1,m)scanf("%I64d",&v[i]);
    }
    bool check(LL mid){
        int now=1;
        up(i,1,n){
            a[i]=a[i-1]/2;
            while(a[i]<mid&&now<=m)a[i]+=v[now++],c[now-1]=i;
            if(a[i]>=mid)continue;
            if(now>m)return 0;
        }
        up(i,now,m)c[i]=n;
        return 1;
    }
    void work(){
        LL left=0,right=inf,mid,ans;
        while(left<=right){
            mid=(left+right)>>1;
            if(check(mid))ans=mid,left=mid+1;
            else right=mid-1;
        }
        check(ans);ans=inf;
        up(i,1,n)ans=min(ans,a[i]);
        printf("%I64d\n",ans);
        up(i,1,m)printf("%d\n",c[i]);
    }
    void slove(){
        init();
        work();
    }
}

int main(){
    using namespace OI;
    slove();
}

时间: 2024-11-07 10:59:26

[7.8]烤鱼的相关文章

客观分析经营一家烤鱼店要怎样做

腊山烤鱼与您一起客观分析经营一家烤鱼店要怎样做. 首先,要保证烤鱼店经营的产品具有特色,尤其是在选择烤鱼店品牌时不可盲目选择,否则不仅不能保证经营利润还有可能会出现亏损,而要想有特色的产品就要不断的去学习更新新产品. 其次,要保证烤鱼店有独特的销售手段去吸引消费者,经营者可以定期的举办一些特色活动或是促销优惠活动等,可以给老顾客免费赠送小菜或是给一些打折优惠,再比如举办一些特色宣传提高店铺的知名度,这些方法都能够使得店铺的营业额有一定量提高. 最后,还要保证烤鱼店的内外形象,也就是保证装修特色以

前端工程师如何月薪过4万

食指小心翼翼的按了一下Enter,提交了深夜前的最后一行代码,轻轻的将烟灰不是很熟悉的抖了几下,看了一眼窗外只有几盏孤独的路灯下的北京夜色突然间想起了什么,那是多年前键盘上的梦想.从事这个行业8年了,走到今天想把一路的经验和辛酸呈现给你们.也想静下心来,好好写点什么对得起这个标题. 1.我是谁? 可能你认识我,也可能你觉得对于敢写这样标题的我多少有些鄙夷.不过都希望你能耐心看完它.我跟你们一样,经历中国传统教育从小学中学高中大学,一直就像一个不倒翁一样一直被摆来摆去,小学的时候妈妈就会说你看人家

微信 小程序组件 分页菜单

HML***************** <view class="container flex-wrap flex-direction-row"> <!-- left aside --> <view class="aside flex-wrap flex-direction-col"> <block wx:key="navList" wx:for="{{navList}}">

html常用的标签

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

PHP与webserver【简书看到的】

很久以前,人们造出来一个机器人,它的英文名字叫web server,中文名叫网页服务器.(为了简写,下文称web server为server) server的工作很简单,就是做内容的分发. 初期的sever功能很简单,只能处理静态请求,当客户端请求/index.html的时候,server去文件系统里面找到对应的index.html文件,然后返回给客户端,这个时期的server就像一个仓库管理员,别人要啥,他给啥. 可是这样的机器人很明显不能满足人们的需求,因为sever机器人只能处理静态请求,

别了,杭州

迟迟不肯下笔来书写这篇埋藏心底将近两个月的随笔,不愿意写下这浓重的一笔,不愿意去做最后的告别,不愿意面对回忆:但天下无不散之筵席,在杭州飞速发展之际,我选择离开,谨以此文,祭奠成长的三年. 遥记得那是2014年2月8日,匆匆在宁波整理完生活必备的行李,寄了快递,就踏上了前往杭州的客车.你还记得吗,潘同学,第一晚我是寄宿在你家的噢.2月9号的杭州很是欢迎我,一大早就开始下大雪,我又是急急忙忙,背了个包就朝着公司人事介绍的范围去找房子.一脸茫然的下了公交,接触了闻名滨江的垃圾街,询问了两户农民房之后

搜索引擎关键字智能提示的一种实现

问题背景 搜索关键字智能提示是一个搜索应用的标配,主要作用是避免用户输入错误的搜索词,并将用户引导到相应的关键词上,以提升用户搜索体验. 美团CRM系统中存在数以百万计的商家,为了让用户快速查找到目标商家,我们基于solrcloud实现了商家搜索模块.用户在查找商家时主要输入商户名.商户地址进行搜索,为了提升用户的搜索体验和输入效率,本文实现了一种基于solr前缀匹配查询关键字智能提示(Suggestion)实现. 需求分析 支持前缀匹配原则 在搜索框中输入"海底",搜索框下面会以海底

我的2014-转行转行再转行,坚守互联网

2014年的1月1号,直到用餐的客人全部走完,关完店回到家已经是凌晨了,想想以前在北京的时候,女友让我回家带点大葱,我买成了韭菜,后来居然开了一家餐饮店,还主做采购,变化真是挺大啊. 进入正题. 我的职业生涯一帆风顺,毕业后直接去了北京,遇到移动互联网最好的时代,各种新的机遇和挑战,让我们这些IT行业的新人能够快速获得足够多的经验和历练,有机会快速成为大牛,这真是一个最好的时代,造就了很多浪潮儿.对我个人来说,同时也是最坏的时代,因为最浮躁时的我没有抓住最好的机遇,不缺少学习能力和创造力,却总不

五十万年薪的人是怎么过日子的?

五十万年薪的人是怎么过日子的?修改 由于各行各业及自己本身原有基础不一样,可能大家的回答没有横向可比性,希望大家能够在回答中包含以下信息:1 自己年龄,从事的行业岗位,属于什么职级2 受过的教育水平3 父母能够在你刚开始工作时提供多大帮助4 自己在哪线城市工作 关于生活状态的其他问题:你认为怎样的生活状态是最理想的?年收入50元的人是怎么过日子的?一万年薪的人都是怎么过日子的?十万年薪的人都是怎么过日子的?百万年薪的人都是怎么过日子的?千万年薪的人都是怎么过日子的?修改 举报9 条评论 分享 •