一家新开业的滑雪场,需要采购不同规格的滑雪板,每个滑雪板的长度是不固定的, 现在需要把排列好的滑雪板用木板做成木箱封装好进行快递,每次快递的总重量是有限制的,不能超过重量 G。 只要每次打包的重量不超过 G,多个滑雪板可以摞放在一起,使用与最长滑雪板长度相同的两个木板进行固定。 假设,给出排列好的每个滑雪板的重量 Gi,和长度 Li,请计算需要最少多长的木板才能将所有的滑雪板把包好。 【输入格式】 输入的第一行有两个数字,一个是滑雪板的个数,一个是包裹总重量。 以下滑雪板个数行,每行的第一个数是滑雪板的重量 Gi和长度 Li。 【输出格式】 输出需要最少的木板的总长度。注:每次打包需要 2 个木板。 【样例输入】(测试数据不包含本样例) 5 5 2 1 1 2 1 3 2 3 2 2 【样例输出】 10
正确答案:参考程序(Python):滑雪板按重量分组装箱,每组重量和≤G,取该组最长板长,木板总长=2*Σ每组最长板。贪心按长度降序尽量合并。样例→10。核心:重量分组+最长板×2。
试卷来源:2023全国青少年信息素养大赛C++算法创意实践挑战赛(小学组_复赛)真题