Tea

G - Tea HDU - 5881
这一题的复杂之处在于考虑到各种各样的情况

#include<iostream>

using namespace std;
typedef long long LL;
int main(void)
{
    long long l,r;
    while(cin>>l>>r)
    {
        if(r<=1)
            cout<<0<<endl;//如果r小于1,不需要倒茶
        else  if(r==2)//如果r==2,只需要倒一次
        cout<<1<<endl;
        else if(r==l||r==l+1)//如果有两者相差1或者相等,需要倒两次
            cout<<2<<endl;
        else 
      {
          if(l == 0)
           cout<<(r-1-l)/2<<endl;//注释1
          else
           cout<<1+(r-l)/2<<endl;//注释2
      }

    }

   return 0;
}

注释2
每次倒茶之后一杯里面的茶的容量
1 low/2+0.5
2 low/2+0.5+1 总和 low +2
3 low/2+0.5+1+1 总和 low + 4
4 low/2+0.5+1+1+1 总和low + 6
……….
所以这种情况下
upper - low 是奇数,则与upper-low-1的次数相同,表示最后剩下1unit
奇数 Count = (upper-low-1)/2+1;//其中(upper-low-1)/2==(upper-low)/2
如果是偶数,则没有剩下
偶数 Count = (upper-low)/2+1;
即    Count = (upper-low)/2+1;
注释1
1 1
2 2 总和 3
3 3 总和 5
4 4 总和 7
……………
这种情况下
(upper-low) = 奇数 (upper-low)/2 + 1 其中(upper-low)/2 == (upper-low-1)/2
                    = 偶数 (upper-low-1)/2+1
                  即 = (upper-low-1)/2+1;

全部评论

相关推荐

现在是2026.2.27,距离我2025.8.16在boss上投出第一份简历以来已经过去了半年多时间了。可能许多牛友对我并不陌生,在去年的89月份,深陷实习焦虑的我不停的在牛客上发帖求助,改过的简历不知道发了多少次。因为双非本的缘故,在实习这条路上可谓是处处碰壁。boss上四位数的沟通只换来两位数的回复,好不容易约到的面试很多还因为各种原因被挂。最终在9月底遇到了我实习过程中的第一个贵人:美团实习的ld。尽管那是个测开岗,但是没有关注我实际的技术栈,而是用专业的提问让我感受到了前所未有的面试体验,发掘了自己的技术闪光点。最终让我决定放弃了另一家中小厂的后端。他们非常尊重我对开发学习的热情,也给足了我自由发挥的空间,如果不是他们让我深度参与的用例生成项目,我或许连接到后面面试的机会都没有。尽管岗位不是开发,但这个过程中对大厂工作流程的深度参与以及对业务,项目,和技术的思维提升对我后续的开发面试一样提供了巨大的帮助。时代的洪流让我们每个人都被迫卷入其中,错过了互联网的红利时期,无论实习还是秋招都令不同背景的同学倍感压力,尽管如此我们依旧要相信:努力定有回报最后祝各位27的兄弟姐妹们,在暑期实习的面试路上一路披荆斩棘,策马扬鞭,用梦中情司的offer回应自己一直以来不愿放弃的拼搏timeline:2.6一面2.11&nbsp;二面2.12&nbsp;三面&nbsp;当天转hr面2.26&nbsp;hr面,面完云证+录用评估2.27&nbsp;offer
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务