先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);        }    }}
点赞 1
评论 2
全部评论

相关推荐

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