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

相关推荐

犹豫的小狐狸刷了100道题:你是我在牛课上见到的最漂亮的女孩了
点赞 评论 收藏
分享
od现在都成这样了&nbsp;就业市场真是crazy
牛客473059135号:没事,我有个朋友是985本硕学计算机的,被华为卡目标院校了简历挂,不过不是od虽然人家拿到一堆别的offer了就挺搞笑的属于是……
点赞 评论 收藏
分享
评论
2
7
分享

创作者周榜

更多
牛客网
牛客企业服务