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;  
}  

 

posted @ 2017-06-30 20:57  kimsimple  阅读(176)  评论(0编辑  收藏  举报