【传送门:BZOJ2016


简要题意:

  贝西收到了N 块巧克力,她会在接下来的D 天里吃掉这些巧克力,她想制定一个计划,让她每 天的快乐度都保持在较高的水品上。 在第一天刚开始的时候,贝西的快乐度为0。巧克力必须从第一块吃起,不能打乱食用的次序, 因为公牛们是按照这个顺序送给她的。吃掉第i 块巧克力,会让她的快乐度立即增加Ai。贝西在一天 内可以连续食用多块巧克力,也可以一块也不吃。不管如何,当她晚上睡觉之后,快乐度会在半夜减 半,如果快乐度是个奇数,则向下取整。请问贝西应该怎样吃巧克力,才能让她在D 天内最小快乐 度最大呢?


输入格式:

  • 第一行:两个整数N 和D,1 ≤ N;D ≤ 50000

  • 第二行到第N + 1 行:第i + 1 行有一个整数Hi,1 ≤ Hi ≤ 10^6


输出格式:

  • 单个整数:表示贝西在D 天内的最小快乐度的最大值

  • 下来n行输出每个巧克力在哪一天吃掉


样例输入:

5 5

10

40

13

22

7


样例输出:

24

1

1

3

4

5


样例解释:

  第一天吃前两块巧克力,第二天一块都不吃, 接下来三天每天各吃一块。


题解:

  也是二分最小最大值

  然后就一天一天的走,每当当前的欢乐值小于二分的值时,就不停地吃巧克力直到大于等于二分的值(记得开long long)


参考代码:

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<cstdlib>
using namespace std;
typedef long long LL;
LL a[];int n,d;
int b[],te[];
bool check(LL x)
{
memset(b,,sizeof(b));
LL sum=;
int t=;
for(int i=;i<=d;i++)
{
sum/=;
while(sum<x&&t<=n)
{
sum+=a[t];
b[t]=i;
t++;
}
if(sum<x) return false;
}
return true;
}
int main()
{
scanf("%d%d",&n,&d);
for(int i=;i<=n;i++) scanf("%lld",&a[i]);
LL l=0LL,r=50000000000LL;
LL ans=0LL;
while(l<=r)
{
LL mid=(l+r)/2LL;
if(check(mid)==true)
{
for(int i=;i<=n;i++)
{
if(b[i]==) te[i]=d;
else te[i]=b[i];
}
ans=mid;
l=mid+;
}
else r=mid-;
}
printf("%lld\n",ans);
for(int i=;i<=n;i++) printf("%d\n",te[i]);
return ;
}

BZOJ2016: [Usaco2010 Feb]Chocolate Eating的更多相关文章

  1. BZOJ 2015: [Usaco2010 Feb]Chocolate Giving( 最短路 )

    裸最短路.. ------------------------------------------------------------------------------------ #include ...

  2. 2015: [Usaco2010 Feb]Chocolate Giving

    2015: [Usaco2010 Feb]Chocolate Giving Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 269  Solved: 1 ...

  3. bzoj2015 [Usaco2010 Feb]Chocolate Giving

    Description Farmer John有B头奶牛(1<=B<=25000),有N(2*B<=N<=50000)个农场,编号1-N,有M(N-1<=M<=10 ...

  4. bzoj2014 [Usaco2010 Feb]Chocolate Buying

    Description     贝西和其他奶牛们都喜欢巧克力,所以约翰准备买一些送给她们.奶牛巧克力专卖店里 有N种巧克力,每种巧克力的数量都是无限多的.每头奶牛只喜欢一种巧克力,调查显示, 有Ci头 ...

  5. 【BZOJ】2014: [Usaco2010 Feb]Chocolate Buying(贪心)

    http://www.lydsy.com/JudgeOnline/problem.php?id=2014 这应该是显然的贪心吧,先排序,然后按花费取 #include <cstdio> # ...

  6. 【BZOJ】2015: [Usaco2010 Feb]Chocolate Giving(spfa)

    http://www.lydsy.com/JudgeOnline/problem.php?id=2015 这种水题真没啥好说的.. #include <cstdio> #include & ...

  7. [Usaco2010 Feb]Chocolate Buying

    题目描述     贝西和其他奶牛们都喜欢巧克力,所以约翰准备买一些送给她们.奶牛巧克力专卖店里 有N种巧克力,每种巧克力的数量都是无限多的.每头奶牛只喜欢一种巧克力,调查显示, 有Ci头奶牛喜欢第i种 ...

  8. bzoj 2015: [Usaco2010 Feb]Chocolate Giving【spfa】

    因为是双向边,所以相当于两条到1的最短路和,先跑spfa然后直接处理询问即可 #include<iostream> #include<cstdio> #include<q ...

  9. bzoj2016[Usaco2010]Chocolate Eating*

    bzoj2016[Usaco2010]Chocolate Eating 题意: n块巧克力,每次吃可以增加ai点快乐,每天早晨睡觉起来快乐值会减半,求如何使d天睡觉前的最小快乐值最大.n,d≤5000 ...

随机推荐

  1. BZOJ 2565 最长双回文串(回文自动机)

    题意 给一个长度为N的字符串S.对于一个字符串AB,如果A和B都是回文串,那么称AB是一个双回文串.求问S最长双回文子串的长度?N <= 100000 题解 正反双向构造回文自动机,得到某一个点 ...

  2. 【BZOJ 1089】[SCOI2003]严格n元树

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 设fi表示深度为i的树个数,si是fi的前缀和,即si为深度不超过i树的个数. 那么si=s[i-1]^n + 1 就是说 先选一个 ...

  3. 【codeforces 29B】Traffic Lights

    [题目链接]:http://codeforces.com/problemset/problem/29/B [题意] 一辆车; 让从A开到B; 然后速度是v; (只有在信号灯前面才能停下来..否则其他时 ...

  4. 怎样避免在EF自己主动生成的model中的DataAnnotation被覆盖掉

    相信非常多人刚接触EF+MVC的时候,会有这个疑问.就是当我们在model类中加验证信息的时候.会在又一次生成model的时候被重写掉. 这里介绍一个方法: 比方我有个Employee类是从数据库中生 ...

  5. 小贝_mysql select5种子句介绍

    mysql select5种子句介绍 简要 一.五种字句 二.具体解释五种字句 一.五种字句 where.group by.having.order by.limit 二.具体解释五种字句 2.1.理 ...

  6. 从头认识Spring-1.16 SpEl对集合的操作(1)-建立集合以及訪问集合的元素,以&lt;util:list/&gt;为例

    这一章节我们来讨论一下怎样建立集合以及訪问集合的元素? 1.建立集合? (1)domain 蛋糕类: package com.raylee.my_new_spring.my_new_spring.ch ...

  7. light oj 1317

    Description You probably have played the game "Throwing Balls into the Basket". It is a si ...

  8. pchip和spline差别

  9. bzoj1026: [SCOI2009]windy数(传说你是数位DP)

    1026: [SCOI2009]windy数 题目:传送门 题解: 其实之前年少无知的时候好像A过...表示当时并不知道什么数位DP 今天回来深造一发... 其实如果对这个算法稍有了解...看到这题的 ...

  10. 曲根英语万词---二、evoke

    曲根英语万词---二.evoke 一.总结 一句话总结:evoke v.唤起,引起 词根:-voc-, -vok- [词根含义]:声音,叫喊 1.consecrate? v,供奉,奉为神圣 -ate, ...