【一次过】【PriorityQueue】【2017好未来】n个数里最小的k个

本文介绍了一种高效算法,用于从一组整数中找出最小的k个数,并通过实例展示了算法的实现过程。该算法利用了优先队列的数据结构,确保了在大量数据输入时的性能稳定。

找出n个数里最小的k个

输入描述:

每个测试输入包含空格分割的n+1个整数,最后一个整数为k值,n
不超过100。

输出描述:

输出n个整数里最小的k个数。升序输出

示例1

输入

3 9 6 8 -10 7 -11 19 30 12 23 5

输出

-11 -10 3 6 7

解题思路:

使用Priority即可。为了保证更高的拓展性,本题采用固定大小的最大堆堆进行输入,然后逆序输出即可。

注意维护好固定最大堆的性质!

import java.util.*;

public class Main {

    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        List<Integer> list = new ArrayList<>();
        String[] strs = sc.nextLine().split(" ");
        for(String str : strs)
            list.add(Integer.parseInt(str));

        int num = list.get(list.size() - 1);
        PriorityQueue<Integer> queue = new PriorityQueue<>(11, Collections.reverseOrder());
        for(int i=0; i<list.size()-1; i++){
            if(queue.size() < num)
                queue.offer(list.get(i));
            else{
                if(list.get(i) > queue.peek())
                    continue;
                
                queue.poll();
                queue.offer(list.get(i));
            }
        }

        Stack<Integer> stack = new Stack<>();
        while(!queue.isEmpty()){
            stack.push(queue.poll());
        }

        for(int i=0; i<num-1; i++)
            System.out.print(stack.pop() + " ");
        System.out.print(stack.pop());
    }
}

 

某建筑和装饰板材的生产企业所用原材料主要是木质纤维和其他植物素纤维材料, 总体可分为 A,B,C 三种类型。该企业每年按 48 周安排生产,需要提前制定 24 周的原 材料订购和转运计划,即根据产能要求确定需要订购的原材料供应商(称为“供应商”) 和相应每周的原材料订购数量(称为“订货量”),确定第三方物流公司(称为“转运 商”)并委托其将供应商每周的原材料供货数量(称为“供货量”)转运到企业仓库。 该企业每周的产能为 2.82 万立方米,每立方米产品需消耗 A 类原材料 0.6 立方米, 或 B 类原材料 0.66 立方米,或 C 类原材料 0.72 立方米。由于原材料的特殊性,供应商 不能保证严格按订货量供货,实际供货量可能多于或少于订货量。为了保证正常生产的 需要,该企业要尽可能保持不少于满足两周生产需求的原材料库存量,为此该企业对供 应商实际提供的原材料总是全部收购。 在实际转运过程中,原材料会有一定的损耗(损耗量占供货量的百分比称为“损耗 率”),转运商实际运送到企业仓库的原材料数量称为“接收量”。每家转运商的运输 能力为 6000 立方米/周。通常情况下,一家供应商每周供应的原材料尽量由一家转运商 运输。 原材料的采购成本直接影响到企业的生产效益,实际中 A 类和 B 类原材料的采购单 价分别比 C 类原材料高 20%和 10%。三类原材料运输和储存的单位费用相同。 附件 1 给出了该企业近 5 年 402 家原材料供应商的订货量和供货量数据。附件 2 给 出了 8 家转运商的运输损耗率数据。请你们团队结合实际情况,对相关数据进行深入分 析,研究下列问题: 1.根据附件 1,对 402 家供应商的供货特征进行量化分析,建立反映保障企业生产 重要性的数学模型,在此基础上确定 50 家最重要的供应商,并在论文中列表给出结果。 2.参考问题 1,该企业应至少选择多少家供应商供应原材料才可能满足生产的需求? 针对这些供应商,为该企业制定未来 24 周每周最经济的原材料订购方案,并据此制定 损耗最少的转运方案。试对订购方案和转运方案的实施效果进行分析。 3.该企业为了压缩生产成本,现计划尽量多地采购 A 类和尽量少地采购 C 类原材 料,以减少转运及仓储的成本,同时希望转运商的转运损耗率尽量少。请制定新的订购 方案及转运方案,并分析方案的实施效果。 4.该企业通过技术改造已具备了提高产能的潜力。根据现有原材料的供应商和转运 商的实际情况,确定该企业每周的产能可以提高多少,并给出未来 24 周的订购和转运 方案。 注:请将问题 2、问题 3 和问题 4 订购方案的数值结果填入附件 A,转运方案的数 值结果填入附件 B,并作为支撑材料(勿改变文件名)随论文一起提交。 附件 1 的数据说明 (1)企业的订货量:第一列为供应商的名称;第二列为供应商供应原材料的类别; 第三列及以后共 240 列为企业向各供应商每周的订货量(单位:立方米);数值“0”表 示相应的周(所在列)没有向供应商(所在行)订货。 (2)供应商的供货量:第一列为供应商的名称;第二列为供应商供应原材料的类别; 第三列及以后共 240 列为各供应商每周的供货量(单位:立方米);数值“0”表示相应 的周(所在列)供应商(所在行)没有供货。 附件 2 的数据说明 第一列为转运商的名称;第二列及以后共 240 列为每周各转运商的运输损
05-12
<think>好的,用户的问题是关于如何基于附件1和附件2的数据,分析供应商的重要性,制定经济的订购和转运方案,并评估实施效果,同时考虑压缩成本和技术改造后的产能提升潜力。需要按照严格的格式要求来回答,还要生成相关问题。 首先,我需要明确用户的需求。他们希望分析供应商的重要性,这可能涉及到供应商的供货能力、可靠性、成本等因素。然后需要制定订购和转运方案,确保生产需求的同时降低成本。评估效果和考虑技术改造后的产能提升也是关键点。 接下来,用户提供了附件1和附件2的数据。虽然没有具体数据,但可以假设附件1可能包含供应商的历史供货数据、价格、交货时间等,附件2可能涉及运输成本、转运方式、时间等信息。需要基于这些数据进行建模和分析。 第一步,分析供应商的重要性。可能需要使用ABC分类法,根据供货量、准时率、成本等指标进行分类。同时,结合Kraljic矩阵,将供应商分为战略型、杠杆型、瓶颈型和常规型。还可以计算供应商的综合评分,比如准时交货率乘以供货量,或者考虑成本因素,使用熵权法或AHP层次分析法来确定权重。 第二步,制定订购方案。这可能需要建立库存模型,比如经济订货批量模型(EOQ),计算最优的订购量和频率。同时考虑动态规划模型来处理多周期问题,确保在满足生产需求的前提下最小化总成本。还需要考虑供应商的供应能力限制,可能需要线性规划模型来分配订单。 第三步,设计转运方案。运输路径优化可能涉及图论中的最短路径算法,比如Dijkstra算法,或者使用运输问题模型,如最小费用流问题。同时,整合运输资源,比如合并运输批次,利用规模效应降低成本。实时监控运输状态,动态调整路线,避开拥堵或延误。 第四步,成本压缩与产能评估。进行敏感性分析,找出对总成本影响最大的因素,比如原材料价格波动或运输费率变化。引入学习曲线模型,预测随着生产规模扩大,单位成本下降的趋势。评估技术改造后的产能提升,可能需要使用生产函数模型,如Cobb-Douglas函数,分析资本投入与产出的关系。 第五步,方案验证与优化。建立蒙特卡洛模拟模型,评估不同情境下的方案稳定性。使用数据包络分析(DEA)比较不同方案的效率,并进行持续改进,应用PDCA循环不断优化方案。 关于格式要求,需要分步骤,每个步骤换行,避免使用首先、然后等词汇。数学公式需要用$或$$包裹,代码要用三个反引号注明语言。最后生成相关问题,必须基于原问题和回答内容,比如供应商分类方法、运输路径优化算法、技术改造的产能评估方法等。 需要确保回答中没有第一人称,引用内容不集中,每个步骤清晰。检查是否满足所有格式要求,特别是问题和回答的最后部分的相关问题是否符合规范。</think>基于附件数据的分析可按照以下方法体系展开: **一、供应商重要性评估模型** 建立多维度评价指标体系: - 供货能力指标:$C_i=\frac{Q_{actual}}{Q_{order}} \times 100\%$ - 成本效益指标:$V_i=w_1P_i + w_2T_i$($P$为单价,$T$为运输费率) - 风险系数:$R_i=\sigma(\Delta t) + \lambda \cdot N_{defect}$ 采用熵权TOPSIS法计算综合评分,分类矩阵示例: ```python # 供应商分类算法 def classify_supplier(score): if score > 0.8: return '战略型' elif 0.6 < score <=0.8: return '杠杆型' else: return '常规型' ``` **二、动态订购优化模型** 构建混合整数规划模型: $$ \min \sum_{t=1}^{T} (c_tx_t + h_tI_t + b_ts_t) $$ 约束条件: $$ I_t = I_{t-1} + x_t - d_t + s_t $$ $$ x_t \leq M\cdot y_t $$ $$ \sum_{i=1}^n x_{it} \geq D_t $$ 使用CPLEX或Gurobi求解器进行多周期优化,考虑供应商最大供应量约束。 **三、智能转运方案设计** 运输路径优化采用改进Dijkstra算法: ```python def optimized_routing(graph, start): # 初始化优先队列 pq = PriorityQueue() pq.put((0, start)) while not pq.empty(): current_dist, u = pq.get() for v, weight in graph[u].items(): if distance[v] > current_dist + weight: distance[v] = current_dist + weight pq.put((distance[v], v)) ``` 结合时间窗约束设计动态调度策略,建立运输成本矩阵: | 路线 | 固定成本 | 可变成本系数 | 最大运量 | |------|---------|-------------|---------| | A-B | 500 | 0.8 | 40 | **四、成本压缩与产能评估** 1. 成本敏感度分析模型: $$ \Delta TC = \sum \frac{\partial TC}{\partial \alpha_i} \cdot \Delta \alpha_i $$ 2. 技术改造效益评估: $$ \eta = \frac{P_{new} - P_{old}}{I} \times 100\% $$ 3. 产能提升潜力计算: $$ \hat{Q} = Q_0 \cdot (1 + \beta)^t + \epsilon \cdot \ln(K/K_0) $$ **五、方案验证体系** 1. 建立仿真验证环境: ```matlab % 蒙特卡洛模拟框架 for i=1:10000 demand = normrnd(mu,sigma); [cost(i),service_level(i)] = simulate_policy(demand); end ``` 2. 关键绩效指标对比: - 总成本降低率 ≥15% - 订单满足率 ≥98% - 库存周转率提升 ≥20%
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值