• UVa 1648 (推公式) Business Center


    题意:

    有一种奇怪的电梯,每次只能向上走u个楼层或者向下走d个楼层

    现在有m个这种电梯,求恰好n次能够到达的最小楼层数(必须是正数),最开始默认位于第0层。

    分析:

    假设电梯向上走x次,则向下走n-x次,则所到达的楼层为xu - (n-x)d ≥ 0

    (u+d)x ≥ nd,x的最小值为

    换句话说,如果nd % (u+d) == 0, x = nd / (u+d)

    否则 x = nd / (u+d) + 1

    考虑到不能停到0楼的条件:当nd % (u+d) == 0会出现这种情况,所以只能多上一次u个楼层,少下一次d个楼层,所以这样最终会停在u+d层

     1 #include <cstdio>
     2 
     3 int main()
     4 {
     5     int n, m;
     6 
     7     while(scanf("%d%d", &n, &m) == 2)
     8     {
     9         int ans = 1000000000;
    10         while(m--)
    11         {
    12             int u, d;
    13             scanf("%d%d", &u, &d);
    14             if((n*d) % (u+d) == 0) { if(u+d < ans) ans = u+d; }
    15             else
    16             {
    17                 int x = (n*d) / (u+d) + 1;
    18                 int t = x*(u+d)-n*d;
    19                 if(t < ans) ans = t;
    20             }
    21         }
    22         printf("%d
    ", ans);
    23     }
    24 
    25     return 0;
    26 }
    代码君
  • 相关阅读:
    angular.isDefined()
    angular.isDate()
    angular.isArray()
    .NET中栈和堆的比较
    SQL Server 2012配置Always On可用性组
    一分钟了解负载均衡的一切
    C# 线程并发锁
    获取Http请求参数
    什么是WCF
    Bitmap算法应用
  • 原文地址:https://www.cnblogs.com/AOQNRMGYXLMV/p/4299114.html
Copyright © 2020-2023  润新知