标签:
http://acm.hdu.edu.cn/showproblem.php?pid=5881
题意:有一壶水, 体积在 LL
和 RR
之间, 有两个杯子, 你要把水倒到两个杯子里面, 使得杯子水体积几乎相同(体积的差值小于等于1), 并且使得壶里剩下水体积不大于1. 你无法测量壶里剩下水的体积, 问最小需要倒水的次数。
第一次倒给第一个杯子L/2+0.5是比较合适的,第二次倒给第二个杯子L/2+0.5+1,再给第一个杯子倒2L,继续这样直到壶只剩小于等于1L。
最后的公式就是 (R - L) / 2 + 1。
然后特判一下。
#include<cstdio> using namespace std; typedef long long ll; ll ac(ll l,ll r) { if(r<=1) return 0; if(r<=2) return 1; if(l==r||l==r-1) return 2; if(l<=1) l=1; return (r-l)/2+1; } main() { ll l,r; while(~scanf("%lld%lld",&l,&r)) { printf("%lld\n",ac(l,r)); } }
标签:
原文地址:http://www.cnblogs.com/CrazyBaby/p/5894417.html