拼多多 拼越计划 服务端开发 笔经

2020.08.02 晚上 笔试 2h

1)多多的骰子组合
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int k = sc.nextInt();
        if(k == 0) {
            System.out.println("paradox");
            return;
        }
        int n = sc.nextInt();
        int pos = k, cnt = 0, d;
        for(int i = 0; i < n; i++){
            d = sc.nextInt();
            if(d == pos) {
                if(i == n) {
                    pos = 0;
                }
                else {
                    System.out.println("paradox");
                    return;
                }
            } else if(d < pos) {
                pos -= d;
            } else {
                pos = d - pos;
                cnt++;
            }
        }
        System.out.println(pos + " " + cnt);
    }
}


2)多多吃饭

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int m = sc.nextInt();
        int t = sc.nextInt();
        if(t == 0) {
            System.out.println(0);
            return;
        }
        int[][] a = new int[n][2];
        int[][] b = new int[m][2];
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < 2; j++) {
                a[i][j] = sc.nextInt();
            }
        }

        for (int i = 0; i < m; i++) {
            for (int j = 0; j < 2; j++) {
                b[i][j] = sc.nextInt();
            }
        }

        int res = Integer.MAX_VALUE;

        for (int i = 0; i < n; i++) {
            if(a[i][1] >= t) {
                res = Math.min(res, a[i][0]);
                continue;
            }
            for (int j = 0; j < m; j++) {
                if(b[j][1] >= t) {
                    res = Math.min(res, b[j][0]);
                    continue;
                }
                if(a[i][1] + b[j][1] >= t) {
                    res = Math.min(res, a[i][0] + b[j][0]);
                }
            }
        }

        if(res == Integer.MAX_VALUE) {
            System.out.println(-1);
            return;
        }

        System.out.println(res);
    }
}


第一题100%,第三题50%,第二题不会做,第三题不会做,我好菜。#笔经##校招##拼多多##Java工程师#
全部评论
同1.5
1 回复
分享
发布于 2020-08-02 21:30
兄弟,咱俩一样😂
点赞 回复
分享
发布于 2020-08-02 21:23
联想
校招火热招聘中
官网直投
我第三题拿背包没试出来就用的穷举,结果只过了50%
点赞 回复
分享
发布于 2020-08-02 21:24
同1.5
点赞 回复
分享
发布于 2020-08-02 21:35
同1.5
点赞 回复
分享
发布于 2020-08-02 21:37
我1.55
点赞 回复
分享
发布于 2020-08-02 22:16
骰子那题直接穷举法秒了😂
点赞 回复
分享
发布于 2020-08-06 19:31
第3题结束后想出来了,对晚餐按美味值排序,然后用一个suffixMin数组记录晚餐的后缀最小能量值。然后枚举中餐,对于diff = t-中餐i的美味值>0的情况,对排序后的晚餐二分查找>=diff的下标pos,然后中餐i的能量值加上suffixMin[pos]作为答案候选,取最大值。同时不要忘记单独处理中餐和晚餐中已经满足美味值的菜。总复杂度为O(nlogm)。
点赞 回复
分享
发布于 2020-08-07 17:34
第一题92%,不知道为什么?😅
点赞 回复
分享
发布于 2020-08-07 22:48

相关推荐

点赞 3 评论
分享
牛客网
牛客企业服务