牛客编程巅峰赛S1第4场 - 黄金&钻石

牛牛分蛋糕

https://ac.nowcoder.com/acm/contest/6384/A

A、牛牛分蛋糕

题目描述
牛牛今天家里要来客人,所以牛牛今天特意做了他最拿手的两种蛋糕,但是他是一个有洁癖的人,所以他在分蛋糕时,有如下几个原则:
1.他不希望一个盘子里出现两种蛋糕
2.他希望每个盘子中都有蛋糕
3.他想让装有最少蛋糕数量的盘子中装有的蛋糕数量尽可能多

示例1
输入
5,2,3
输出
1
示例2
输入
4,7,10
输出
3

solution



class Solution {
public:
    /**
     * 处理函数,返回在所有分法中,蛋糕数量最少的盘子中分到最多的蛋糕数量
     * @param n int整型 n个盘子
     * @param a int整型 a蛋糕数量
     * @param b int整型 b蛋糕数量
     * @return int整型
     */

    bool check(int x, int n, int a, int b) {
    int cnt1 = a / x;
    int cnt2 = b / x;
    return cnt1 + cnt2 >= n;
}

int solve(int n, int a, int b) {
    // write code here
    int l = 1, r = 1e9, ans = -1;
    while (l <= r) {
        int mid = r + l >> 1;
        if (check(mid, n, a, b))    l = mid + 1, ans = mid;
        else r = mid - 1;
    }
    return ans;
}
};

B、牛牛凑数字

题目描述
牛牛今天逛商店,看到商店里摆着一些很漂亮的数字,牛牛非常喜欢,想买一些数字带回家。
数字一共有九种类型,分别是1-9这九个数字,每个数字的价钱都不一样,而且每个数字的货源都非常充足。
牛牛是个完美主义者,他希望用自己的能够承受的价格,从这些数字里面购买,并且凑到最大的数字带回家。

示例1
输入
5,[5,4,3,2,1,2,3,4,5]
输出
"55555"
示例2
输入
2,[9,11,1,12,5,8,9,10,6]
输出
"33"

solution




class Solution {
public:
    /**
     * 得到牛牛能够凑到的最大的数字
     * @param n int整型 牛牛能够承受的价格
     * @param a int整型vector 1-9这九个数字的价格数组
     * @return string字符串
     */
    struct node{
        int val,i;
        bool operator < (const node A)const{
            if(val == A.val) return i > A.i;
            return val < A.val;
        }
    }q[10];
    string solve(int n, vector<int>& a) {
        // write code here
        for(int i = 0 ; i < 9 ; ++i){
            q[i].val = a[i];
            q[i].i = i+1;
        }
        sort(q,q+9);
        string ans = "";
        int len = n/q[0].val;
        n -= len*q[0].val;
        int qvq = q[0].i,val = q[0].val;
        for(int i = 0 ; i < len ; ++i) ans +=char(qvq+'0');
        int j = 0;
        for(int i = 8 ; i >= qvq ; --i){
            while(n + val >= a[i] && j < len){
                  ans[j++] = i + '1';
                  n = n + val - a[i];
            }
        }
        if(ans.size() == 0) ans = "-1";
        return ans;
    }
};
牛客编程巅峰赛S1 文章被收录于专栏

S1赛季留念

全部评论

相关推荐

05-04 09:38
已编辑
门头沟学院 引擎开发
个人9本海硕,本硕期间一直在投游戏相关实习/校招,岗位由客户端-&gt;引擎-&gt;TA-&gt;AIGC。最终目标肯定是独游制作人,所以程序策划美术都点了些,感觉也没谁了。值此春招末尾总结下技术向校招要点,算是回馈牛客社区了。也附上我的Github和个人博客,欢迎各种交流讨论。&nbsp;前言&nbsp;首先是个人惯例的劝退游戏行业。参见缅怀故人&nbsp;和永远有多远&nbsp;,相比于互联网,游戏薪资大概相当但要求更高,加班严重且更为局限。如果你只是带着一腔热情想入这行,建议先找个日常实习了解下真实的游戏行业再做选择。&nbsp;准备&nbsp;当然,在你决定踏出这步后,第一步就是准备相关的笔试面试。这里先建议找到你感兴趣的公司岗位的JD,然后...
牛客28967172...:说的还是有道理的,我校招时就拿到过网易雷火好几个顶级项目组方向的offer,基本上流程和你说的一样。 但本质还是劝退互联网的游戏方向,本质上是代价更高,而且职业生涯容错率很低,方向比较窄。 代价是众所周知的严重加班,游戏大版本赶工基本上通宵无休,甚至国庆五一都没放假是常态。 职业生涯性价比低是因为游戏行业本质上就是赢家通吃,但你要跳槽只有腾讯网易等头部,要么就是米哈游莉莉丝库洛三七等少数中厂,然后就没了,公司是断崖的少 游戏开发相比互联网方向岗位非常非常少,比如网易整个雷火也才五六百人,里面十几个工作室,招人比例非常低,其他游戏公司也是一样。 而且方向也很窄,你做引擎开发就只能跳相关,你做游戏客户端也只能跳相关(游戏客户端都算吃香的,但市场hc也非常非常少,跳槽机会更少),基本上很难转回互联网 这里对比传统互联网,大厂多的都说不过来,而且容错率很大,你做搜索方向可以跳推荐,你做推荐方向可以跳广告,要求远没有游戏行业那么严,甚至你之前干测试都能跳槽研发方向
我的求职进度条
点赞 评论 收藏
分享
二十岁的编程男神王大...:读博吧兄弟,你这绩点太好了,何必转码,另外哈哈哈真见到有括号标出来985的,这个不标注也知道吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务