题目:http://acm.hdu.edu.cn/showproblem.php?pid=5881
题意:Alice有一罐体积大于等于L,小于等于R的茶,要倒进两个容器里面
要求两个容器的茶相差不超过1,还要求罐子里面剩余的茶不超过1
思路:规律(先考虑L再考虑R)
R = 0,1时,不需要倒
R = 2时,只要一个容器倒1单位就行了
L = 0,R > 2时,可以得出(R+1)/2
其他,先倒(L+1)/2和(L+1)/2+1,然后每次向多的里面倒2,max(2,(R-L)/2+1)
代码:
#include<bits/stdc++.h>
using namespace std;
int main()
{
long long L,R;
while(~scanf("%lld%lld",&L,&R))
{
if(R <= 1)
printf("0\n");
else if(R == 2)
printf("1\n");
else if(L == 0)
printf("%lld\n",(R+1)/2);
else
printf("%lld\n",max(2ll,(R-L)/2+1));
}
return 0;
}