[USACO10FEB] 吃巧克力Chocolate Eating (二分答案)
题目链接
Solution
先直接二分答案,然后贪心判断,一旦少于答案就吃一块。
思路很简单,有一点细节。
- 一天内可以不吃巧克力.
- 注意处理最后时没吃完的全部在最后一天吃完.
Code
#include<bits/stdc++.h>
#define ll long long
#define N 50008
#define inf 0x3f3f3f3f3f3f3f
using namespace std;
void in(ll &x)
{
char ch=getchar();ll f=1,w=0;
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){w=w*10+ch-'0';ch=getchar();}
x=f*w; return;
}
ll n,d,a[N],bl[N];
bool judge(ll st)
{
ll now=0,res=d;
for(int i=1;i<=n;i++)
{
if(now<st)
{bl[i]=d-res+1;now+=a[i];}
else {
while(1){
now=now/2;
if(now<st)break;
res--;
}
res--; now+=a[i];
bl[i]=d-res+1;
}
}
while(1)
{
if(now<=st)break;
res--; now=now/2;
}
if(res<1)return 1;
if(res==1&&now>=st)return 1;
return 0;
}
int main()
{
in(n),in(d);
for(int i=1;i<=n;i++) in(a[i]);
ll l=0,r=inf;
while(l<=r)
{
ll mid=(l+r)/2;
if(judge(mid))l=mid+1;
else r=mid-1;
}
cout<<l-1<<endl;
judge(l-1);
for(int i=1;i<=n;i++)
{
if(bl[i]==0||bl[i]>d)bl[i]=d;
printf("%lld\n",bl[i]);
}
return 0;
}
[USACO10FEB] 吃巧克力Chocolate Eating (二分答案)的更多相关文章
- P2985 [USACO10FEB]吃巧克力Chocolate Eating
P2985 [USACO10FEB]吃巧克力Chocolate Eating 题目描述 Bessie has received N (1 <= N <= 50,000) chocolate ...
- [USACO10FEB]吃巧克力Chocolate Eating
题目:洛谷P2985. 题目大意:有n块巧克力要吃d天,并且只能按顺序吃.一块巧克力有一个开心值,吃了就能增加开心值.一个人初始开心值为0,且每天早上开心值变为原来的一半.问如何吃巧克力才能使开心值最 ...
- luogu P2985 [USACO10FEB]吃巧克力Chocolate Eating
题目描述 Bessie拿到了N (1 <= N <= 50,000)块巧克力.她决定想个办法吃掉这些巧克力,使得它在吃巧克力的这段时间里,最不开心的一天尽可能的开心.并且一共吃D (1 & ...
- BZOJ 2016: [Usaco2010]Chocolate Eating( 二分答案 )
因为没注意到long long 就 TLE 了... 二分一下答案就Ok了.. ------------------------------------------------------------ ...
- 洛谷——P2983 [USACO10FEB]购买巧克力Chocolate Buying
P2983 [USACO10FEB]购买巧克力Chocolate Buying 题目描述 Bessie and the herd love chocolate so Farmer John is bu ...
- 洛谷 P2983 [USACO10FEB]购买巧克力Chocolate Buying 题解
P2983 [USACO10FEB]购买巧克力Chocolate Buying 题目描述 Bessie and the herd love chocolate so Farmer John is bu ...
- 洛谷 P2983 [USACO10FEB]购买巧克力Chocolate Buying
购买巧克力Chocolate Buying 乍一看以为是背包,然后交了一个感觉没错的背包上去. #include <iostream> #include <cstdio> #i ...
- P2983 [USACO10FEB]购买巧克力Chocolate Buying
题目描述 Bessie and the herd love chocolate so Farmer John is buying them some. The Bovine Chocolate Sto ...
- 【洛谷】P2983 [USACO10FEB]购买巧克力Chocolate Buying(贪心)
题目描述 Bessie and the herd love chocolate so Farmer John is buying them some. The Bovine Chocolate Sto ...
随机推荐
- JS-Promise(使异步操作同步执行)
单个异步操作同步 <div id="box"></div> <script> var box = document.querySelector( ...
- leetcode 171. Excel表列序号(python)
给定一个Excel表格中的列名称,返回其相应的列序号. 例如, A -> 1 B -> 2 C -> 3 ... Z -> 26 AA -> 27 AB -> 28 ...
- Flask变量规则(构建动态url)
原文出处: http://codingdict.com/article/4867 可以通过将可变部分添加到规则参数来动态构建URL.这个变量部分被标记为 < variable-name>. ...
- 【转】PyQt5系列教程(七)控件
PyQt5系列教程(七)控件 软硬件环境 Windows 10 Python 3.4.2 PyQt 5.5.1 PyCharm 5.0.4 前言 控件是PyQt应用程序的基石.PyQt5自带很多不 ...
- Unity3D利用Logcat调试安卓
发布安卓包之后再次测试发生什么问题很难知道怎么了,比如说出现闪退等情况,可以用Logcat检测到,logcat是Android中一个命令行工具,可以用于得到程序的log信息,可以用 logcat 命令 ...
- c# 调用 webService
开局几张 照着做就完事 说明下 这个wsdl 文件是根据别人提供的webService 接口 打开后改变后缀来的 这样就引用完成了 接下来就是重点了 怎么调用 localhost.WsSyncDu ...
- Maximum Subarray(最大连续子序列和)
https://leetcode.com/problems/maximum-subarray/ 思路: 如果全为负值,那么取最大值 如果有非负值,那么我们依次计算到当前位置为止的最大值.假设有n个元素 ...
- BERT实战——基于Keras
1.keras_bert 和 kert4keras keras_bert 是 CyberZHG 大佬封装好了Keras版的Bert,可以直接调用官方发布的预训练权重. github:https://g ...
- [Bzoj1009][HNOI2008]GT考试(动态规划)
题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1009 显而易见的动态规划加矩阵快速幂,不过转移方程不怎么好想,dp[i][j]表示长度为 ...
- 【Spring Boot项目】Win7+JDK8+Tomcat8环境下的War包部署
一.pom.xml及启动类修改 pom.xml Step1:指定打包类型 <!-- 打包类型 jar 或 war --> <packaging>war</packagin ...