zoukankan      html  css  js  c++  java
  • Tea---hdu5881(规律)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5881

    题意: 现在有一壶水,体积在[L, R]范围内,现有两个空杯子,现想要把这壶水倒入这两个杯子中去,使得壶中剩余的水的体积<=1,并且两个杯子的体积差<=1;求最少需要到多少次;

    题解:当R<=1的时候,很明显是不需要倒的,符合条件;当R==2的时候,只需倒一次即可; 当R>2时,我们可以先往第一个杯子中到 L/2,第二个杯子到 (L+1)/2,这样最大化的情况下就是还剩余R-L-1,然后把这些每次倒入体积2(这样才能保证两个杯子的体积差<=1)的进入每个杯子,直到体积剩下<=1即可; 整理一下结果就是max(2, (R-max(1, L)/2)+1);

    #include<stdio.h>
    #include<string.h>
    #include<algorithm>
    #include<iostream>
    #include<vector>
    #include<queue>
    #include<set>
    using namespace std;
    #define met(a, b) memset(a, b, sizeof(a))
    #define N 100005
    #define INF 0x3f3f3f3f
    typedef long long LL;
    
    int main()
    {
        LL L, R;
        while(scanf("%I64d %I64d", &L, &R) != EOF)
        {
            if(R<=1)
                printf("0
    ");
            else if(R<=2)
                printf("1
    ");
            else
            {
                printf("%I64d
    ", max( (R - max(L, 1ll))/2+1ll, 2ll));
            }
        }
        return 0;
    }
    View Code
  • 相关阅读:
    8月6日总结
    8月4日总结
    8月3日总结
    快速幂计算题解
    7月31日总结
    7月30日总结
    关于PHP中”::”能够调用一个非静态的方法的解释
    码云 使用 svn 管理项目
    Mysql的数据类型
    thinkphp5的$this->fetch()
  • 原文地址:https://www.cnblogs.com/zhengguiping--9876/p/5891850.html
Copyright © 2011-2022 走看看