任你风华绝代


私信TA

用户名:dotcpp0668596

访问量:1515

签 名:

这个人不懒,但他什么也没写

等  级
排  名 13141
经  验 941
参赛次数 0
文章发表 2
年  龄 19
在职情况 学生
学  校 SCAU
专  业 计算机科学与技术

  自我简介:

解题思路:求最大值和最小值,可以考虑二分

注意事项:

参考代码:

#include<iostream>


using namespace std;


long long a[10005][3],n;


int check1(long long x)

{

    long long i;

    for(i=0;i<n;i++)

    {

        if(a[i][0]/x>a[i][1])

            return 0;

    }

    return 1;

}


int check2(long long x)

{

    long long i;

    for(i=0;i<n;i++)

    {

        if(a[i][0]/x<a[i][1])

            return 0;

    }

    return 1;

}


int main()

{

    ios::sync_with_stdio(0),cin.tie(0);

    long long i,j;

    cin>>n;

    for(i=0;i<n;i++)

    {

        for(j=0;j<2;j++)

            cin>>a[i][j];

    }

    long long l=1,r=1e9;

    long long mid,ans1=0,ans2=0;

    while(l<=r)

    {

        mid=(l+r)/2;

        if(check1(mid))

        {

            ans1=mid;

            r=mid-1;

        }

        else

            l=mid+1;

    }

    l=1;

    r=1e9;

    while(l<=r)

    {

        mid=(l+r)/2;

        if(check2(mid))

        {

            ans2=mid;

            l=mid+1;

        }

        else

            r=mid-1;

    }

    cout<<ans1<<' '<<ans2;

    return 0;

}


 

0.0分

3 人评分

  评论区

  • «
  • »