zoukankan      html  css  js  c++  java
  • 【Online Challenge】GOCC09 Google's Online Challenge

    60分钟两道题,第一道树相关占30分,第二道简单数论占20分。时间分配严重不合理,第二题不到十分钟就解决了,剩下的时间都在处理第一题的compile error……咕鸽online没有错误提示,感觉和面试时候白板手写代码差不多了TvT再次让我感到ide的伟大……

    challenge帮你处理题目输入输出,和在leetcode做有点相似,你只要关心主逻辑就可以了。和leetcode不一样的地方是,会把输入输出的过程给你看,毕竟你得知道输入长什么样,特别是图,会有很多种表示方法。第一题我就在这里踩了坑,没注意到边的表示不是邻接矩阵,而是拿了个vector存两个顶点,还不告诉我谁是父结点谁是子结点(如果题目其实给的数据是按照父结点子结点的顺序的话,请忽略之,脑子确实有点懵),于是sigsev了……

    第一题:给一棵树,要求找到距离最近且数值互质的祖先结点。

    时间空间:(不记得了……)

    测试组数T:(不记得了……)

    结点个数N:1<=N<=105

    每个结点的值Valuei:1<=Valuei<=100

    太惨了,五个样例都只过了一个……直接输入输出是不是都能拿分啊我没试过,之前也没找到这个比赛的题目信息啊(已善用搜索)

    结束了还懵圈了一个小时,然后我大概意识到自己的错误,seq小的不一定是seq大的结点的祖先结点啊!感觉算法这边得针对图相关的题目查漏补缺一下了。

    第二题:给三个数,类型是long long,定义一次操作是将其中两个数同时减一,但不能将任何一个数减至负数。问最大操作数是多少。

    例子是2 3 4,可行的操作是

    第一种:2 3 4 → 1 2 4 → 0 1 4 → 0 0 3      三次操作

    第二种:2 3 4 → 2 2 3 → 2 1 2 → 1 1 1 → 0 0 1  四次操作

    显然就是四次操作是最大操作数了……

    看到标题里有“最大”,我还以为会用dp……

    思路很明确,直接上代码吧

    long long maxOpNum(long a, long b, long c) {
        long long x, y, z;
        x = max(max(a, b), c);
        y = min(min(a, b), c);
        z = a + b + c - x - y;
        if (x >= y + z) {
            return y + z;
        }
        return (x + y + z) >> 1;
    }

    总体来说应该是不难的,但是因为各种原因,不熟练、有知识漏洞、读题做题习惯,时间不够用。练习时间还是太少了……

    Anyway,加油鸭ヾ(◍°∇°◍)ノ゙

  • 相关阅读:
    Java自学
    java自学
    每日总结
    每日总结
    每日总结
    每周总结
    每日总结
    每日总结
    每日总结
    每日总结
  • 原文地址:https://www.cnblogs.com/zhouys96/p/13414700.html
Copyright © 2011-2022 走看看