【传送门: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. Thunderbird导出邮件为PDF文件

    一般如果在windows下,可以通过打印的方式,生成一个PDF文件,可以完成此任务. 而今天在linux下采取此方式,生成的PDF文件居然是空白.原因未知. 而Thunderbird并未提供该功能,这 ...

  2. cin详解(get()、getline()、clear()、sync())

    简述 在C中,输入输出用scanf和printf,在输入数据的同时还需说明数据的类型,如果输入数据较多,那就很麻烦,而C++中也有相似的东西cin和cout,它们来自C++的一个名叫" io ...

  3. C++ 数字、string 简便互转

    一.数字转为 string 类型 借用 sprintf 函数: char buffer[256]; int counter = 10; sprintf(buffer,"%04i", ...

  4. 使用Javascript D3创建属于你的涂鸦作品

    Matplotlib能够用来创建非常美丽精确的数学图形: 可是有时候在进行想法交流的时候,不想那么严谨正式.想使用那种轻松的.涂鸦风格的图形: MATLAB XKCDify项目能够用来生成上述的涂鸦作 ...

  5. java线程共享受限资源 解决资源竞争 thinking in java4 21.3

    java线程共享受限资源 解决资源竞争  具体介绍请參阅:thinking in java4 21.3 thinking in java 4免费下载:http://download.csdn.net/ ...

  6. OpenCASCADE点向平面投影

    OpenCASCADE点向平面投影 OpenCASCADE的ProjLib类提供了解析曲线(直线.圆.椭圆.抛物线.双曲线)向解析曲面(平面.圆柱面.圆锥面.球面.圆环面)投影的功能,主要用来计算三维 ...

  7. MFC,C++,VC++,VS2010 之间究竟是什么关系

    C++是在C语言的基础上发展而来的面向对象的一种语言: MFC是基于C++类的窗口开发工具,内含大量的基类.降低编程人员的工作量: VC++是一种开发工具. VS2010是更高版本号的开发工具,功能强 ...

  8. Innosetup

    卸载的同时删除日志,卸载的时候判断程序是否正在运行,regsvr32 1.卸载程序的时候如何判断程序是否正在运行 http://bbs.csdn.net/topics/370097914 2.强制删除 ...

  9. nodejs是什么

    nodejs是什么 一种javascript的运行环境,能够使得javascript脱离浏览器运行. 阅读本帖需要先复习小学语文课文,华罗庚的<统筹方法>. 比如,想泡壶茶喝.当时的情况是 ...

  10. Why functions - Not only for python

    It may not be clear why it is worth the trouble to divide a program into functions. There are a lot ...