HDU 5881--Tea 思维规律
感谢http://blog.csdn.net/black_miracle/article/details/52567718
题意:有一壶水, 体积在 L
和 R
之间, 有两个杯子, 你要把水倒到两个杯子里面, 使得杯子水体积几乎相同(体积的差值小于等于1),
并且使得壶里剩下水体积不大于1. 你无法测量壶里剩下水的体积, 问最小需要倒水的次数。
题解:
r<=1 不用倒就行了 0次
r<=2 倒一次就行了 1单位 1次
r<=l+3 先在左边倒入l/2,在右边倒入l/2+1 2次
以上为特判
当l<=1时,那就是在左边倒1,然后轮流倒2 茶壶剩1 1+(r-1)/2 (r+1)/2次-----------(r-1)/2第一次后最多还能倒几次二,每次二都维持平衡
否则 先倒l/2 再倒l/2+1 然后轮流倒2 茶壶剩1 2+(r-l-2)/2 (r-l)/2+1次---------------前两次平衡,最多还能倒(r-l-2)/2次二
#include<stdio.h> __int64 l,r,flag; int main() { while(~scanf("%I64d%I64d",&l,&r)){ if(r<=1){printf("0\n");continue;} if(r<=2){printf("1\n");continue;} if(r<=l+3){printf("2\n");continue;} if(l<=1)flag=(r+1)/2; else flag=(r-l)/2+1; printf("%I64d\n",flag); } return 0; }