BZOJ 2016: [Usaco2010]Chocolate Eating
Posted nhc2014
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BZOJ 2016: [Usaco2010]Chocolate Eating相关的知识,希望对你有一定的参考价值。
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2016
解:
典型的二分,然而一开始我只写了20分。。。
1.要开long long.
2.到了最后如果巧克力还有的剩的话,要在最后一天把它们都吃掉
#include<iostream> #include<cstring> #include<cstdio> using namespace std; int n,d,h[50010],belong[50010],belong2[50010]; long long ans; bool check(long long x) { long long now=0; int k=1; for (int i=1;i<=d;i++) { now=now/2; while (now<x) { if (k>n) return false; now+=h[k]; belong2[k]=i; k++; } } while (k<=n) { belong2[k]=d; k++; } for (int i=1;i<=n;i++) belong[i]=belong2[i]; return true; } int main() { long long r=0; scanf("%d%d",&n,&d); for (int i=1;i<=n;i++) { scanf("%d",&h[i]); r+=h[i]; } long long l=0; while (l<=r) { long long mid=(l+r)/2; if (check(mid)) { ans=mid; l=mid+1; } else r=mid-1; } printf("%lld\n",ans); for (int i=1;i<=n;i++) printf("%d\n",belong[i]); return 0; }
以上是关于BZOJ 2016: [Usaco2010]Chocolate Eating的主要内容,如果未能解决你的问题,请参考以下文章
BZOJ 2100 Usaco2010 Dec Apple Delivery
bzoj1827[Usaco2010 Mar]gather 奶牛大集会*
bzoj1776[Usaco2010 Hol]cowpol 奶牛政坛*
[BZOJ1782][Usaco2010 Feb]slowdown 慢慢游