zoukankan      html  css  js  c++  java
  • HDU5881 Tea(找规律)

    http://acm.hdu.edu.cn/showproblem.php?pid=5881

    题意:有一壶水, 体积在 LL 和 RR 之间, 有两个杯子, 你要把水倒到两个杯子里面, 使得杯子水体积几乎相同(体积的差值小于等于1), 并且使得壶里剩下水体积不大于1. 你无法测量壶里剩下水的体积, 问最小需要倒水的次数。

    第一次倒给第一个杯子L/2+0.5是比较合适的,第二次倒给第二个杯子L/2+0.5+1,再给第一个杯子倒2L,继续这样直到壶只剩小于等于1L。

    最后的公式就是 (R - L) / 2  + 1。

    然后特判一下。

    R<=1 茶壶里剩下不超过1,不用倒,0次。
    R<=2  从茶壶里向某一个杯子倒 1,两个杯子里茶的差量最大为1,茶壶里剩下的最多为1。倒1次。
    L==R或者L==R-1 ,从茶壶里分别向两个杯子倒 L/2 , 倒2次。
    L==0或者L==1情况相同,都为1。
    R>L+1时,先向一个杯子倒L/2,再向另一个倒L/2+1, 再轮流重复向两个杯子里倒2,直到倒完(最多剩下1).
    #include<cstdio>
    using namespace std;
    typedef long long ll;
    ll ac(ll l,ll r)
    {
        if(r<=1)
        return 0;
        if(r<=2)
        return 1;
        if(l==r||l==r-1)
        return 2;
        if(l<=1)
        l=1;
        return (r-l)/2+1;
    }
    main()
    {
        ll l,r;
        while(~scanf("%lld%lld",&l,&r))
        {
            printf("%lld
    ",ac(l,r));
        }
    }
  • 相关阅读:
    url编码
    客户端安全-xss-1类型介绍
    阿里云扩容教程
    jquery获取和设置表单数据
    uMlet建模工具
    phpstorm的调试工具xdebug
    服务器如何处理http请求
    http基础实战
    协程
    Goroutine(协程)为何能处理大并发?
  • 原文地址:https://www.cnblogs.com/CrazyBaby/p/5894417.html
Copyright © 2011-2022 走看看