20230908 滴滴AK

先mark一下,到点了更新

====分割线====

t1. 糖果工厂可以生产n种不同的糖果,假设这些糖果的编号分别为1到n,每一天工厂可以生产Ci个编号为i的糖果。今天工厂接到了一个订单,需求是a包糖果,且每包糖果必须是同一种类的,每包数量不能少于b个。假设糖果工厂在无存货的情况下,至少需要多少天才能完成这个订单?

package didi;

import java.math.BigInteger;
import java.util.Scanner;

//简单二分,但是要用BigInteger,不然会溢出
//int 只能过82%
//long 只能过91%
public class t1 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        long a = scanner.nextInt(), b = scanner.nextInt();
        int[] nums = new int[n];
        for (int i = 0; i < n; i++) {
            nums[i] = scanner.nextInt();
        }
        BigInteger l = new BigInteger("0"), r = new BigInteger(String.valueOf(Long.MAX_VALUE));
        while (l.compareTo(r) < 0) {
            BigInteger mid = l.add(r.subtract(l).divide(new BigInteger("2")));
            BigInteger count = check(nums, b, mid);
            if (count.compareTo(new BigInteger(String.valueOf(a))) >= 0) {
                r = mid;
            } else {
                l = mid.add(new BigInteger("1"));
            }
        }
        System.out.println(l);
    }

    static BigInteger check(int[] nums, long b, BigInteger mid) {
        BigInteger count = new BigInteger("0");
        for (int num : nums) {
            count = count.add(new BigInteger(String.valueOf(num)).multiply(mid).divide(new BigInteger(String.valueOf(b))));
        }
        return count;
    }
}

t2.现在有n个由大写英文字符组成的字符串,且这些字符串不会互相包含,也不会相等。现在想知道有哪些字符串满足如下条件。设满足条件的字符串为S,存在其他的两个字符串拼接在一起后,能通过去除一个非空前缀和一个非空后缀变为字符串S。这两个用于拼接的字符串可以是同一个,也可以为S。

package didi;

import java.util.*;

// 将一个字符串分成两部分,分别存到lSet和rSet中
// 然后遍历所有字符串,如果lSet中包含r,rSet中包含l,则这个字符串满足条件
public class t2 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        HashSet<String> lSet = new HashSet<>();
        HashSet<String> rSet = new HashSet<>();
        String[] arr = new String[n];
        for (int i = 0; i < n; ++i) {
            arr[i] = scanner.next();
            for (int j = 0; j < arr[i].length() - 1; ++j) {
                String l = arr[i].substring(0, j + 1);
                String r = arr[i].substring(j + 1);
                lSet.add(l);
                rSet.add(r);
            }
        }
        LinkedList<String> res = new LinkedList<>();
        for (int i = 0; i < n; ++i) {
            for (int j = 0; j < arr[i].length() - 1; ++j) {
                String l = arr[i].substring(0, j + 1);
                String r = arr[i].substring(j + 1);
                if (lSet.contains(r) && rSet.contains(l)) {
                    res.add(arr[i]);
                    break;
                }
            }
        }
        System.out.println(res.size());
        String[] resArr = new String[res.size()];
        for (int i = 0; i < res.size(); ++i) {
            resArr[i] = res.get(i);
        }
        Arrays.sort(resArr);
        for (String s : resArr) {
            System.out.println(s);
        }
    }
}

全部评论
选择题也忒难了点吧
点赞
送花
回复 分享
发布于 2023-09-08 20:42 浙江
厉害,根本不知道从哪里入手
点赞
送花
回复 分享
发布于 2023-09-08 20:50 内蒙古
国泰君安
校招火热招聘中
官网直投

相关推荐

头像
06-12 10:39
Java
给你们全都来一刀:你了解回暖的核心逻辑吗,读过回暖的源码吗,上线过回暖相关的项目吗
点赞 评论 收藏
分享
1 6 评论
分享
牛客网
牛客企业服务