字节笔试第4题 有大佬写出来了吗

就是小明小红掷骰子那题。 不知道回溯剪枝能不能过,复杂度很高但能剪一部分,最后时间不够了没写完。
有没有大佬有数学方法或者其他方法的,求个思路


前3题做完了还剩50分钟,怎么都想不出来,急了


-----补充-------
刚刚又做了一下,贴个代码,样例过了,应该没啥问题吧。
哎,剑指那题我还做过,忘了,有点亏。
import java.util.*;

public class Main{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int m = sc.nextInt();
        int[] arrA = new int[n];
        int[] arrB = new int[m];
        for (int i = 0; i < n; ++i) {
            arrA[i] = sc.nextInt();
        }
        for (int i = 0; i < m; ++i) {
            arrB[i] = sc.nextInt();
        }
        long[][] pA = dp(arrA);
        long[][] pB = dp(arrB);
        for (int i = 1; i < 161; ++i) {
            pB[m][i] += pB[m][i - 1];
        }
        long sumA = 0;
        for (int i = 0; i < 161; ++i) {
            sumA += pA[n][i];
        }
        double p = 0;
        for (int i = 1; i < 161; ++i) {
            p += ((double) pA[n][i] / sumA) * ((double) pB[m][i - 1] / pB[m][160]);
        }
        System.out.println(p);
    }

    private static long[][] dp(int[] arr) {
        long[][] p = new long[arr.length + 1][161];
        p[0][0] = 1;
        for (int i = 1; i <= arr.length; ++i) {
            for (int j = i; j <= 8 * i; ++j) {
                for (int k = 1; k <= arr[i - 1]; ++k) {
                    if (j - k >= 0)
                        p[i][j] += p[i - 1][j - k];
                }
            }
        }
        return p;
    }
}


#字节跳动##校招##笔试##字节23秋招笔试太难了吧#
全部评论
在剑指offer 60题的基础上写就行
1 回复 分享
发布于 2022-08-22 14:49 北京
我想可不可以创造两个数组记录数组下标点数出现的概率 然后比一下。。。
点赞 回复 分享
发布于 2022-08-25 00:08 上海
个人感觉就是把多个骰子合并为一个骰子算分数与概率的情况,然后分两组,枚举第一个人得分概率与第二个人小于第一人得分概率的乘积的和
点赞 回复 分享
发布于 2022-08-21 23:50 陕西
看我帖子哦,A了
点赞 回复 分享
发布于 2022-08-21 22:33 北京
最后一个算数学题了 手动把每个人能骰出来的点数和的分布算好,然后分解事件去算就好了
点赞 回复 分享
发布于 2022-08-21 22:04 上海
好强哦,可以讲一下前三道的思路吗X﹏X
点赞 回复 分享
发布于 2022-08-21 21:48 四川
数据点都很大,回溯直接超时,用dp能过,但是我没用long long直接WA了,枯了,结束了才发现,导致样例过了但是提交的时候一个点都过不去
点赞 回复 分享
发布于 2022-08-21 21:41 湖南

相关推荐

01-04 07:53
门头沟学院 C++
心愿便利贴:工作了以后回头再看待这个问题,从客观的视角来讲是因为每个人对自己的要求不同,学习好的人对自己的要求很高,所以觉得考不好就天塌了,认为自己学习好并且值得一份好工作的人也是一样,找不到符合自己预期的工作肯定也会觉得是侮辱,牛客上有很多名校大学生,肯定会存在这种好学生心态啊,“做题区”从来都不是贬义词,这是大部分普通人赖以生存的路径,这个有什么好嘲讽的,有“好学生心态”没有错,但是不要给自己太大的压力了
点赞 评论 收藏
分享
02-05 17:50
已编辑
武汉工程科技学院 Java
点赞 评论 收藏
分享
评论
3
1
分享

创作者周榜

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