当前位置: 首页 > news >正文

产品排序

题目概述

你是一个公司的员工,你会按时间顺序受到一些产品的订单,你需要用一个栈来改变这些订单的顺序(每个产品都必须入栈和出栈一次)。

按初始顺序,每次可以将一个产品入栈,或将栈顶产品弹至现在的序列末尾。

  每个产品有一个制作时间t i 和单位时间惩罚值d i 。

  总的惩罚值为∑ ni=1 (s i × d i ),其中s i 为第i个产品的完成时间,你需要最小化总的惩罚值。

分析

考虑区间 \(dp\)

\(f_{i,j}\) 表示处理 \([i,j]\) 最小的总惩罚值。

分类:

  • 产品 \(i\) 第一个出栈,则有 \(f_{i,j}=t_i\times sd_{i,j}+f_{i+1,j}\)
  • 产品 \(i\)\(k\) 个出栈,则有 \(f_{i,j}=f_{i+1,k}+f_{k + 1,j}+st_{i,k}\times(d_i+sd_{k+1,j})\)

第二种情况第 \(k\) 个出栈,那肯定 \(i+1\)\(k\) 都已经出完栈了,所以后这些贡献。

代码

#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,t[205],d[205];
int st[205][205],sd[205][205],f[205][205];
signed main(){ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);cin>>n;for(int i=1;i<=n;i++)cin>>t[i]>>d[i];for(int i=1;i<=n;i++){for(int j=i;j<=n;j++){st[i][j]=st[i][j-1]+t[j];sd[i][j]=sd[i][j-1]+d[j];}}for(int i=n;i>=1;i--){f[i][i]=t[i]*d[i];for(int j=i+1;j<=n;j++){f[i][j]=t[i]*sd[i][j]+f[i+1][j];for(int k=i+1;k<=j;k++){f[i][j]=min(f[i][j],f[i+1][k]+st[i][k]*(d[i]+sd[k+1][j])+f[k+1][j]);}}}cout<<f[1][n];
}
http://www.gsyq.cn/news/14066.html

相关文章:

  • DataGridView表格控件使用说明
  • MyBatis技术详解:从入门到高效开发 - 详解
  • 实用指南:Linux Shell 脚本:从零到进阶的实战笔记
  • 商城类电商购物APP网购原型——实战计划原型
  • 第八篇
  • C# AStar 算法 - 实际应用
  • nocobase 源码安装
  • Python从入门到实战 (14):工具落地:用 PyInstaller 打包 Python 脚本为可执行文件 - 实践
  • Harmony实现流转开发之音乐播放器跨设备流转 - 实践
  • 解决秒杀高并发的一些方案
  • OpenFeign 继承FeignClient客户端注意事项
  • 详细介绍:Redis 核心数据类型:从命令、结构到实战应用
  • Nginx技术文档与LNMP架构部署指南 - 详解
  • 海康威视WEB视频监控插件3.3 解决视频画面遮挡 无法隐藏的问题 - 详解
  • 赋能智慧应急:国标GB28181平台EasyGBS视频技术如何成为气象灾害预警新工具
  • NET各个版本新增的特性和语法糖
  • 第10章 day10 DrissionPage详细教程
  • 第9章 day09 hook插件
  • nginx 一致性hash和流量检查模块
  • 深入解析:10月底实习准备-Mysql(按面试频率准备)
  • 第11章 day11-day12关于json请求体/逆向爬虫实战
  • 容斥与二项式反演
  • 从Docker构建失败到CRA被淘汰:一个React项目的ES模块探索记录
  • react useMemo Hook详解
  • Python技能大赛-备赛建议
  • github Connection reset by 20.205.243.160 port 443 fatal: Could not read from remote repository.
  • Vue 3.6 引入 Vapor Mode,虚拟DOM已死?
  • part 10
  • content和text方法的区别
  • 完整教程:从零开始学神经网络——前馈神经网络