BISHI54货物堆放

流程图

求解代码

java 复制代码
static class Goods{
        long w;
        long v;
        long c;

        Goods(long w,long v,long c){
            this.w = w;
            this.v = v;
            this.c = c;
        }
    }


    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));

        int n = Integer.parseInt(br.readLine().trim());

        Goods[] goods = new Goods[n];
        long total = 0;
        for(int i=0;i<n;i++){
            String[] str = br.readLine().trim().split("\\s+");
            long w = Long.parseLong(str[0]);
            long v = Long.parseLong(str[1]);
            long c = Long.parseLong(str[2]);

            goods[i]=new Goods(w, v,c);
            total += v;
        }

        Arrays.sort(goods,(x,y)->Long.compare(x.c*y.w, y.c*x.w));

       // 总实际体积 = 初始体积总和 - sumCW,因此最大化sumCW是实现最小体积的关键
        long sumCW = 0;
        // 记录当前遍历商品的「上方总重量」,初始为0(第一个商品在最顶部,上方无重量)
        long upperWeight = 0;

        // 按"从上到下"的堆叠顺序遍历排序后的商品
        for (Goods g : goods) {
            // 计算当前商品的压缩贡献值:c_i × 上方总重量(W_i)
            // 这里必须先计算贡献,再更新上方重量(避免把当前商品算入自己的上方)
            sumCW += g.c * upperWeight;

            // 更新上方总重量:当前商品会成为后续商品的"上方重量",需累加其重量
            upperWeight += g.w;
        }

        long res = total -sumCW;

        out.println(res);
        out.flush();
        out.close();
        br.close();
    }
相关推荐
五彩小白15 分钟前
自回归和上下文
android
如意猴23 分钟前
【C++】007 C/C++ 内存管理机制、malloc与new的区别及模板初阶
java·c++·算法
朝朝辞暮i26 分钟前
C++ 第 32 课:main()、rclcpp::init()、spin()、shutdown()
开发语言·c++·算法
可乐鸡翅yeah_33 分钟前
HLS 分片过期清理,直播旧 TS 分片磁盘爆满问题处理
java·后端·spring·m3u8·m3u8在线·音视频在线播放
旋生万物1 小时前
螺旋角分布的功率谱分析:多窗谱 + FDR 校正
开发语言·python
沫璃染墨1 小时前
《从零入门Linux系统篇(五十七):线程篇·十——生产者消费者模型进阶:从环形缓冲区到POSIX信号量》
linux·运维·服务器·开发语言·c++·系统架构·信号处理
时间的拾荒人1 小时前
Qt 窗口系统详解:从菜单栏到对话框的完整指南
开发语言·qt·面试
专业程序开发源1 小时前
SSM校园拍摄交流服务平台36936-计算机课程设计、毕业设计
java·spring boot·后端·python·elasticsearch·php·课程设计
用户094248568031 小时前
第23章:OpenJDK逃逸分析、标量替换与锁优化
java·jvm
wuminyu1 小时前
LockStack在虚拟线程Mount和Unmount拷贝过程剖析
java·linux·c语言·jvm·c++