荣耀笔试机试 20220825 通用软开

2小时3题,共600分,感觉方法都有点绕2333不过都通过了

第一题 大小端字节流解析





思路:模拟
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int k = 0;
        in.nextLine();
        String[] res = new String[n];
        String line = in.nextLine();
        char[] sc = line.toCharArray();
        int mode = sc[0] - '0';
        int st = 0;
        for (int i=0; i<=sc.length; ++i) {
            if (i == sc.length || i%9==0 && i != 0) {
                // st+1 .. i!
                String sub = new String(sc, st+1, i - st - 1);
                res[k++] = mode == 1 ? sub : new StringBuilder(sub).reverse().toString();
                if (i < sc.length) mode = sc[i] - '0';
                st = i;
            }
        }

        System.out.println(String.join(" ", res));

    }
}

第二题 视频会议使用时长最大化




思路:DP,dp[i] 表示 8..i 区间内所有安排方案中,占用会议室时长的最大值。
import java.util.*;
public class Main {
    static int func(int[][] arr) {
        int n = arr.length;
        // 8 .. 23
        int[] dp = new int[24];
        for (int i=8; i<=23; ++i) {
            int max = 0;
            for (int j=n-1; j>=0; --j) {
                if (arr[j][1] <= i) {
                    int t = arr[j][1] - arr[j][0] + dp[arr[j][0]];
                    max = Math.max(max, t);
                }
            }
            dp[i] = max;
        }
        return dp[23];

    }
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        // 8..23
        int T = sc.nextInt();
        for (int _i=0; _i<T; ++_i) {
            int n = sc.nextInt();
            int[][] arr = new int[n][];
            for (int i=0; i<n; ++i) {
                arr[i] = new int[] {sc.nextInt(), sc.nextInt()};
            }
            int res = func(arr);
            System.out.println(res);
        }
    }
}

第三题 仓库出租公司




思路:二分+DP,二分仓库容量k,然后用DP判断k是否可以满足条件。dp[i][j] 表示前 i 个数中是否存在和为 j 的组合,在遍历最后一层判断即可。
import java.util.*;
import java.io.*;
public class Main {

    static boolean chk(int k, int[] arr, int sum) {
        int n = arr.length;
        boolean[][] dp = new boolean[n+1][k+1]; // 前i个数中存在和为 j 的组合
        for (int i=0; i<=n; ++i) dp[i][0] = true;
        for (int i=1; i<=n; ++i) {
            for (int j=1; j<=k; ++j) {
                boolean t = dp[i-1][j];
                if (j-arr[i-1] >= 0) t = (t || dp[i-1][j-arr[i-1]]);
                dp[i][j] = t;
                if (t && j <= k && sum - j <=k) return true;
            }
        }
        return false;
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] arr = new int[n];
        int sum = 0;
        for (int i=0; i<n; ++i) {
            arr[i] = sc.nextInt();
            sum += arr[i];
        }
        int l = sum / 2, r = sum;
        while (l < r) {
            int mi = l + (r - l) / 2;
            if (chk(mi, arr, sum)) r = mi;
            else l = mi + 1;
        }

        System.out.println(l);
    }
}

#2023一起秋招吧#  
全部评论
大佬,填了确认笔试问卷后。笔试链接是考试当天才发吗?
1 回复 分享
发布于 2022-08-29 10:48 黑龙江
一次dp就可以了吧?dp找到小于等于 sum /2 且最大的仓库容量(即最接近 sum / 2的仓库容量),sum - 最接近的容量,就是答案要的最小的仓库容量。
点赞 回复 分享
发布于 2022-08-30 15:21 重庆
大佬,编程语言有限制吗
点赞 回复 分享
发布于 2022-08-29 20:34 北京
第三题我一开始二维dp超内存了,换一维dp就过了,很神奇
点赞 回复 分享
发布于 2022-08-26 01:38 江苏
大佬  这个是打开三道题都能看见还是必须做完一道提交了才能看到下一道
点赞 回复 分享
发布于 2022-08-30 16:02 陕西
请问算法的题和软开的题同一天是一样的吗
点赞 回复 分享
发布于 2022-08-27 21:55 陕西
大佬
点赞 回复 分享
发布于 2022-08-25 21:18 陕西

相关推荐

今天周一休息,突发奇想写一篇阶段总结。如题,我已经去了一个和Java彻底毫无关联的行业。曾经我以为自己能在计算机行业发光发热,没想到刚入行一年多就当了逃兵。从最开始的热爱到现在一看到代码就厌恶,不知道自己经历了什么。所以我去干什么了?答案是:在成都当了租房销售。上班那会压力大了就念叨着去干租房中介,但是一直下不去这个决心,想着自己学了四年多的计算机知识,终究还是不甘心。终于在某一天准备八股文的时候,看着无数篇和工作内容关系不大的理论知识,那一刻下定决心,决定尝试一下销售行业,也算是给自己一个交代。后面阴差阳错的投了成都自如去当租房管家,没想到面试很顺利,在当天一百多个面试的人里面,我成为了为数不多通过的几个幸运儿之一。目前已经培训通过,正式入职,也开了单,也有压力但是每天过得很开心,真心喜欢那种和人交流的感觉,哪怕是最后没有选择找我租房。说这些也是想告诉那些大三,大四正在找Java实习而焦虑的同学:你们现在还年轻,选择很多,容错率也很高,可以尽情去尝试自己喜欢的行业和工作。不用因为某一次的面试没通过或者简历石沉大海而焦虑,更不用因为身边人都在挤编程的独木桥就强迫自己跟风。也算是自己的碎碎念吧,也希望自己能在新的领域取得一点小成就。也祝牛油工作顺利!
许愿面试顺利的小白很...:ai来了,如果有天赋的话,销售真的是个很好的工作
点赞 评论 收藏
分享
评论
9
45
分享

创作者周榜

更多
正在热议
更多
# 长得好看会提高面试通过率吗? #
4471次浏览 48人参与
# 离家近房租贵VS离家远但房租低,怎么选 #
16917次浏览 137人参与
# MiniMax求职进展汇总 #
25263次浏览 322人参与
# 沪漂/北漂你觉得哪个更苦? #
1616次浏览 41人参与
# 你的实习产出是真实的还是包装的? #
3230次浏览 54人参与
# 春招至今,你的战绩如何? #
16140次浏览 146人参与
# 米连集团26产品管培生项目 #
7385次浏览 226人参与
# HR最不可信的一句话是__ #
1107次浏览 32人参与
# AI面会问哪些问题? #
971次浏览 24人参与
# 你做过最难的笔试是哪家公司 #
1306次浏览 23人参与
# AI时代,哪个岗位还有“活路” #
2930次浏览 53人参与
# 不考虑薪资和职业,你最想做什么工作呢? #
152945次浏览 889人参与
# 简历第一个项目做什么 #
32180次浏览 363人参与
# 军工所铁饭碗 vs 互联网高薪资,你会选谁 #
8029次浏览 43人参与
# XX请雇我工作 #
51164次浏览 171人参与
# 简历中的项目经历要怎么写? #
311119次浏览 4271人参与
# 投格力的你,拿到offer了吗? #
178382次浏览 891人参与
# 你最满意的offer薪资是哪家公司? #
77008次浏览 375人参与
# AI时代,哪些岗位最容易被淘汰 #
64856次浏览 893人参与
# 当下环境,你会继续卷互联网,还是看其他行业机会 #
187635次浏览 1123人参与
# 你怎么看待AI面试 #
180882次浏览 1318人参与
# 正在春招的你,也参与了去年秋招吗? #
364407次浏览 2642人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务