质检员的烦恼-vivo

质检员的烦恼 vivo23秋招软件类1卷

每一款vivoX80的手机质量必须控制在无误差的203克。
假设,质检员小V需要从N台X80手机中选出一台质量为204克的不合格手机。

质检员挑选不合格手机的步骤如下:
1、分组:质检员每轮选择一个正整数,假设当前选择的正整数为K,那么将当前未排除嫌疑的手机进行每组K个的分组,如果不能整除K,那么将最后剩余的手机再单独分一组。
2、称重,以步骤1中的每组为单位,称重设备将对每组都进行一次总质量称重。称重完成后,根据计算你就可以确定不合格手机位于哪一组中。
3、排除掉合格的手机组,循环1、2两步骤,直到嫌疑手机仅剩一台。

总花费时间为每一轮花费的时间总和,每一轮的花费时间由以下两部分组成:
a、每台手机都需要移动到称重设备处,假定该轮共X台手机,题目给定单台手机的移动时间A,那么该轮次的移动时间为 X乘以A。
b、称重需要时间,每一组都需要称重,假定当前轮次共被分成了G组,题目给定每组称重的时间B,那么该轮次的称重时间为G乘以B。

现在给定手机的个数N,单台手机移动到称重处的时间A,每组称重需要的时间B。
请帮质检员计算,每轮应该怎样选择正整数K,才能在运气最差的情况下用最短的时间找到不合格的手机?题目要求你输出该最短的时间。
我们假定运气最差的语义为:每一轮都是数量最多的组进入了下一轮。

暴力回溯法

从1个一组开始尝试,1,2,3…n

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 计算质检员每轮应该如何选择正整数K,才能在运气最差的情况下用最短的时间找到不合格的手机?并输出该最短的时间。
     * @param n int整型 手机个数N
     * @param a int整型 单个移动时间A
     * @param b int整型 单组称重时间B
     * @return long长整型
     */
    long long minTime(int n, int a, int b) {
        // write code here
        long long  time, minTime1=n*(a+b);
        for(long long k=2;k<n;++k){
            long long group = n/k+(n%k!=0?1:0);
            time = n*a+ group*b + minTime(k,a,b);
            // cout<<"n,k,gp,time:"<<n<<" "<<k<<" "<<group<<" "<<time<<endl;
            minTime1=min(time,minTime1);
        }
        return minTime1;
    }
};

回溯法的三种优化

记忆化搜索

比如:60的有因子2、3、10
假设先计算2,最后计算10;先计算3,最后也计算10。
那么10的计算,就是重复的,可以使用备忘录存储起来。

回溯剪枝

剪枝1:如果初始 n=50,k取25,26,27… group为50/25, 50/26, 50/27… 都是2组,但是整除的k是最小的。也就是说,第一次被分为2组的值是最小的,后面的可以进行剪枝。

剪枝2:回溯法的本质是dfs,记录dfs全局最小值。如果当前cost已经超过全局最小值,那么剪枝。

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿 修改,直接返回方法规定的值即可
     *
     * 计算质检员每轮应该如何选择正整数K,才能在运气最差的情况下用最短的时间找到不合格的手机?并输出该最短的时间。
     * @param n int整型 手机个数N
     * @param a int整型 单个移动时间A
     * @param b int整型 单组称重时间B
     * @return long长整型
     */
    const int length = 1000;  //内存有限制
    long long myMinTime(long long n, long long a, long long b, long long  already_cost, long long& minCost, vector<long long>& dp) {
        if(n<length&&dp[n]!=0){ //优化1:记忆化搜索
            return dp[n];
        }
        long long lastGroup = n;
        minCost = min(n*(a+b)+already_cost,minCost); //全局最值
        long long leftMinCost = n*(a+b);  //n剩余的最小值
        for(long long k=2;k<n;++k){       //k个一组
            long long group = n/k+(n%k!=0?1:0);
            if(group==lastGroup){        //优化2:剪枝:如果初始 n=50,k取25,26,27... group为50/25 50/26 50/27... 都是2组,但是整除的k是最小的
                continue;
            }
            long long cur_cost = n*a+ group*b + already_cost; //优化3:继续剪枝:如果已经超过全局最小值,那么剪枝
            if(cur_cost >= minCost){
                continue;
            }
            long long left=myMinTime(k,a,b, cur_cost, minCost,dp); //k a b的k可能是计算过的
            minCost = min(minCost,left+cur_cost);
            leftMinCost = min(leftMinCost, n*a+ group*b+left);
            // cout<<"n,k,gp,time:"<<n<<" "<<k<<" "<<group<<" "<<time<<endl;
            lastGroup=group;
        }
        if(n<length){
            dp[n]=leftMinCost;
        }
        return leftMinCost;
    }
    long long minTime(int n, int a, int b) {
        if(n==1){
            return a+b;
        }
        vector<long long> dp(length); 
        long long minCost=LONG_LONG_MAX;
        myMinTime(n,a,b, 0, minCost,dp);
        return minCost;
    }
};
  • 17
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: SAP质量管理中的质检手册是一个重要的工具,用于管理和指导质检过程。它是一个包含质量管理相关信息和要求的文档。下面我将详细介绍质检手册的作用和内容。 首先,质检手册提供了标准化的质检流程和操作指导。在质检过程中,准确、一致地执行各项操作非常重要。质检手册通过明确的流程步骤和操作指导,帮助质检员确保质检的准确性和一致性,提高工作效率。 其次,质检手册规定了质检的标准和要求。它会列出产品或过程的质量指标、验收标准和判定标准,以及与之相关的检验方法和仪器要求。质检员通过质检手册了解各项标准和要求,进行质检工作时能够有据可依,准确判断产品或过程的合格与否。 此外,质检手册还包含了质检的记录要求。在质检过程中,记录是非常重要的一环。质检手册规定了记录的内容、形式和要求,确保质检结果的准确性和可追溯性。同时,通过记录的完整性和一致性,也为后续的质量分析和改进提供了依据。 最后,质检手册还可以作为培训和知识传递的重要工具。新入职的质检员可以通过质检手册了解工作流程和要求,提高工作效率和质检准确性。同时,质检手册也可以帮助质检员分享经验和知识,促进团队间的交流和学习。 总之,SAP质量管理中的质检手册是一个重要的管理工具。它提供了标准化的质检流程和操作指导,规定了质检的标准和要求,提供了记录要求,并且可以作为培训和知识传递的工具。通过合理使用质检手册,可以提高质检工作的准确性和效率,确保产品或过程的质量。 ### 回答2: SAP质量管理模块提供了一个质检手册来指导企业进行质检管理工作。质检手册是一个集中记录和管理质量检验相关信息的文件,对于提高产品质量、满足质量要求和确保流程符合标准是非常重要的。 质检手册包含了许多有关质量检验的信息,例如产品规范、测试方法和流程、质检标准等。这些信息可以根据企业的需要进行定制和更新,确保其符合最新的质量要求和标准。质检手册还可以包括一些质量控制的指导方针和要求,以确保质检工作能够按照标准和相关程序进行。 质检手册的主要作用是提供一种标准化的质检流程,使质检工作能够得到规范和统一。通过质检手册,企业可以确保所有质检工作的过程和结果符合标准和要求,避免出现质量问题和产品退货情况。此外,质检手册还可以提供一种便捷的方式来跟踪和管理质检数据和记录,对于质检结果的分析和改进也非常有帮助。 SAP质量管理模块的质检手册功能还包括质检计划的创建和维护,这是质检手册中重要的一部分。通过质检计划,企业可以制定质检工作的计划和安排,指定质检员和质检的时间和地点,确保质检工作按时进行。质检计划还可以与其他SAP模块集成,实现质检工作与采购、生产等环节的无缝衔接,提供全面的质检管理解决方案。 总结来说,SAP质量管理模块的质检手册功能是企业实施质量管理工作的重要支持工具。通过质检手册,企业可以制定和管理质检流程和要求,提高产品质量,加强质检工作的规范化和标准化,从而为企业打造出更加可靠和竞争力的产品。 ### 回答3: SAP质量管理中的质检手册是指一种用于记录和管理质检操作的工具。它包含了组织和管理质检活动所需的所有信息和规范。 质检手册的主要目的是提供一个统一的指南,以确保质检过程符合组织的需求和标准。它详细描述了质检活动的流程、方法和要求,使质检人员能够按照规定的步骤进行工作。 质检手册通常包括以下几个方面的内容: 1. 质检组织架构和职责:介绍质检组织的结构和各个成员的职责,以及他们在质检过程中的角色和职责分工。 2. 质检流程和程序:详细描述质检活动的步骤和程序,包括样品收集、检验方法选择、检验设备与工具的使用、数据采集、结果判定等。 3. 质检标准和要求:规定质检活动的标准和要求,包括产品规格、性能要求、缺陷标准等。同时,还可以包括供应商评价和审核的要求。 4. 质检记录和报告:指导质检人员如何记录和报告质检结果,包括检验报告的格式、内容和存档要求。 5. 质检培训和技能要求:确定质检人员的培训需求和技能要求,以确保他们具备进行质检工作所需的知识和技能。 质检手册在SAP质量管理系统中起到了重要的作用,它提供了质检活动的规范化和标准化,确保质检过程的准确性和可靠性。同时,它也方便了质检的追溯和持续改进,通过对质检手册的更新和修订,可以不断提高质检过程的效率和质量水平。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值