zoukankan      html  css  js  c++  java
  • 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
    ");continue;}  
            if(r<=2){printf("1
    ");continue;}  
            if(r<=l+3){printf("2
    ");continue;}  
            if(l<=1)flag=(r+1)/2;  
            else flag=(r-l)/2+1;  
            printf("%I64d
    ",flag);  
        }  
        return 0;  
    }  
  • 相关阅读:
    开发细节
    html
    java学习
    Promise对象
    强制转换和隐式转换
    借助防抖解决输入框的非空校验
    setTimeout
    Symbol类型
    js API
    vue 使用mixin
  • 原文地址:https://www.cnblogs.com/kimsimple/p/7100654.html
Copyright © 2011-2022 走看看