阿里笔试8.24日

第一题主要先除以a,b公约数,然后去遍历Y的值就好了
long A, B, a, b;

long __algo_gcd(long x, long y)
{
    do
    {
    long t = x % y;
    x = y;
    y = t;
    } while (y);
    return x;
}
int main(){
    while(cin>>A>>B>>a>>b){
        long gcd = __algo_gcd(a, b);
        a /= gcd;
        b /= gcd;
        bool status = false;
        for(long i=B/b; i>=1; i--){
//            cout<<i<<endl;
            if (i*a <= A && i*a>=1) {
                cout<<(i*a)<<" "<<i*b <<endl;
                status = true;
                break;
            }
        }
        if (!status) cout<<"0 0"<<endl;

    }
}
第二个有没有大佬来分享一下思路,我的理解是两个节点中所有路径的最大边的最小值,用dijkstra算法的变形,将dist[i,j] = min(dist[i,j], max(dist[i, k], graph[k,j])),假设dist 中存的就是i到j的距离最大边的最小,那么每次更新的时候只需要判断i到k的距离和k-j这边的最大值(即符合路径中最大边)和当前i-j距离取小的那个,但是还是失败了...有没有大佬补充一下思路,40分钟全磕上面了

#笔试题目##阿里巴巴#
全部评论
第二题不是最短路,是并查集
点赞 回复 分享
发布于 2020-08-24 20:46
第二题,并查集。思路有点难写,直接看代码应该会比较清楚,不懂的可以提一下,贴在博客里https://blog.csdn.net/qq_39898877/article/details/108208210
点赞 回复 分享
发布于 2020-08-24 20:46
老哥,想问下可以直接用__***函数吗
点赞 回复 分享
发布于 2020-08-24 22:42
想问一下a>A或b>B为什么就无解了?不可能相除等于小数吗?
点赞 回复 分享
发布于 2020-08-25 00:22
你的第一题居然没有TLE?
点赞 回复 分享
发布于 2020-08-25 01:10
第二题题目是啥
点赞 回复 分享
发布于 2020-08-26 09:35

相关推荐

totoroyyw:千年老妖😂
投递华为等公司10个岗位
点赞 评论 收藏
分享
找呀找呀找工作3:双9也这个价
点赞 评论 收藏
分享
评论
2
7
分享
牛客网
牛客企业服务