zoukankan      html  css  js  c++  java
  • 楼——二分,数学

    题目:

      给出M个电梯,能上升U层,下降D层。总共N此操作。

    思路:

      对于每个电梯,二分上升(或下降)的次数,取min。

      也可以用数学方法

    #include<iostream >
    #include<cstdio>
    #include<queue>
    #include<algorithm>
    #include<math.h>
    #include<cstring>
    using namespace std;
    int n,m;
    long long minn=9999999999;
    int u,d;
    bool check(int x)
    {
        if((1LL*x*u-1LL*(n-x)*d)<0)    return 1;
        else return 0;
    }
    int main()
    {
        freopen("building.in","r",stdin);
        freopen("building.out","w",stdout);
        scanf("%d%d",&n,&m);//n次m个
        while(m--)
        {
            scanf("%d%d",&u,&d);
            int  l=0,r=n,mid;
            while(l < r)
            {
                mid=(l+r)>>1;
                if(check(mid))    l=mid+1;
                else r=mid;
            }
            minn=min(minn,1LL*r*u-1LL*(n-r)*d);
        } 
        cout<<minn;
        return 0;
    }
    #include<iostream>
    #include<cstdio>
    #include<queue>
    #include<math.h>
    #include<cstring>
    #define LL long long 
    using namespace std;
    int n,m;
    LL a,b;
    int main()
    {
        freopen("building.in","r",stdin);
        freopen("building.ans","w",stdout);
        scanf("%d%d",&n,&m);
        LL x,y,ans=953364132;
        while(m--)
        {
            scanf("%lld%lld",&a,&b);
            x=(n*a)%(a+b);
            ans=min(ans,x);
        }
        cout<<ans;
        return 0;
    }
  • 相关阅读:
    开发日记1
    探索需求2
    探索需求1
    周总结8
    周总结7
    周总结6
    周总结5
    周总结4
    周总结3
    周总结2
  • 原文地址:https://www.cnblogs.com/CLGYPYJ/p/7602908.html
Copyright © 2011-2022 走看看