【题解 动态规划】 Colored Rectangles

news2025/1/12 10:48:24

题目描述:

在这里插入图片描述


分析:

乍一看我还以为是贪心!
猫 想想感觉没问题
但是局部最优并不能保证全局最优
比如这组数据

19 19 19 19
20 20
20 20

如果按照贪心的做法,答案是20*20*2
但是其实答案是19*20*4

因此这道题用贪心是不对的

于是我们考虑dp
可以观察到这道题的n非常小只有200
这就暗示我们这道题可以用 n 3 n^3 n3的做法去解决

那么我们就可以这样设dp状态
f [ i ] [ j ] [ k ] 表示用三个颜色分别用了前 i , j , k 个数,所能获得的最大价值 f[i][j][k]表示用三个颜色分别用了前i,j,k个数,所能获得的最大价值 f[i][j][k]表示用三个颜色分别用了前i,j,k个数,所能获得的最大价值
如何转移呢?
考虑一次可以取两个数
也就是说可以取12,23,13
那么分别从这三种状态转移过来即可

有的时候记忆化搜索比dp更好写!


Code

#include<bits/stdc++.h>
using namespace std;

const int N = 210;
int r,g,bb;
int a[N],b[N],c[N];
int f[N][N][N];

bool cmp(int x,int y){
	return x>y;
}

int Dfs(int x,int y,int z){
	if (f[x][y][z]) return f[x][y][z];
	int Max = 0;
	if (x && y) Max = max(Max,Dfs(x-1,y-1,z)+a[x]*b[y]);
	if (x && z) Max = max(Max,Dfs(x-1,y,z-1)+a[x]*c[z]);
	if (z && y) Max = max(Max,Dfs(x,y-1,z-1)+b[y]*c[z]);
	return f[x][y][z] = Max;
}

int main(){
	cin>>r>>g>>bb;
	for (int i = 1; i <= r; i++) cin>>a[i];
	for (int i = 1; i <= g; i++) cin>>b[i];
	for  (int i = 1; i <= bb; i++) cin>>c[i];
	sort(a+1,a+r+1);
	sort(b+1,b+g+1);
	sort(c+1,c+bb+1);
	cout<<Dfs(r,g,bb)<<endl;
	return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1058359.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Autowired和Resource的关系

相同点对于下面的代码来说&#xff0c;如果是Spring容器的话&#xff0c;两个注解的功能基本是等价的&#xff0c;他们都可以将bean注入到对应的field中 不同点但是请注意&#xff0c;这里说的是基本相同&#xff0c;说明还是有一些不同点的&#xff1a; byName和byType匹配顺…

二十八、高级IO与多路转接之select

文章目录 一、五种IO模型&#xff08;一&#xff09;阻塞IO:&#xff08;二&#xff09;非阻塞IO:&#xff08;三&#xff09;信号驱动IO:&#xff08;四&#xff09;IO多路转接:&#xff08;五&#xff09;异步IO: 二、高级IO重要概念&#xff08;一&#xff09;同步通信 vs 异…

<C++>类和对象-下

目录 一、构造函数的初始化 1. 构造函数体赋值 2. 初始化列表 2.1 概念 2.2 隐式类型转换式构造 2.3 explicit关键字 二、static静态成员 1. 概念 2. 特性 三、友元 1. 友元函数 2.友元类 四、内部类 1. 概念 五、匿名对象 1. const引用匿名对象 2. 匿名对象的隐式类型转换 总…

华为云云耀云服务器L实例评测 | 实例场景体验之搭建接口服务:通过华为云云耀云服务器构建 API 服务

华为云云耀云服务器L实例评测 &#xff5c; 实例场景体验之搭建接口服务&#xff1a;通过华为云云耀云服务器构建 API 服务 介绍华为云云耀云服务器 华为云云耀云服务器 &#xff08;目前已经全新升级为 华为云云耀云服务器L实例&#xff09; 华为云云耀云服务器是什么华为云云…

数据结构笔记(王道408)

文章目录 前言绪论数据结构基本概念基本概念数据结构三要素与ADT 算法基本概念算法定义算法五个基本特性好算法的进阶特性 算法复杂度时间复杂度空间复杂度 线性表 前言 数据结构的笔记相比于其他3门&#xff0c;笔记的重要性要低很多&#xff0c;毕竟对于选择408的同学来说&a…

Python学习笔记之运算符的使用

Python学习笔记之运算符的使用 整型&#xff1a;二进制0b100十进制4、八进制0o100十进制64、十进制100、十六进制0x100十进制256浮点型&#xff1a;123.456&#xff0c;1.23456e2字符串型&#xff1a;‘Hello’&#xff0c;“Hello”布尔型&#xff1a;True、False复数型&…

C++算法 —— 动态规划(8)01背包问题

文章目录 1、动规思路简介2、模版题&#xff1a;01背包第一问第二问优化 3、分割等和子集4、目标和5、最后一块石头的重量Ⅱ 背包问题需要读者先明白动态规划是什么&#xff0c;理解动规的思路&#xff0c;并不能给刚接触动规的人学习。所以最好是看了之前的动规博客&#xff0…

【数据结构】排序(2)—冒泡排序 快速排序

目录 一. 冒泡排序 基本思想 代码实现 时间和空间复杂度 稳定性 二. 快速排序 基本思想 代码实现 hoare法 挖坑法 前后指针法 时间和空间复杂度 稳定性 一. 冒泡排序 基本思想 冒泡排序是一种交换排序。两两比较数组元素&#xff0c;如果是逆序(即排列顺序与排序后…

递归与分治算法(1)--经典递归、分治问题

目录 一、递归问题 1、斐波那契数列 2、汉诺塔问题 3、全排列问题 4、整数划分问题 二、递归式求解 1、代入法 2、递归树法 3、主定理法 三、 分治问题 1、二分搜索 2、大整数乘法 一、递归问题 1、斐波那契数列 斐波那契数列不用过多介绍&#xff0c;斐波那契提出…

行高的继承和消除内外边距

行高的继承性 <style>div {font: 12px/1.5 Microsoft yahei;} ​p {font-size: 14px;}</style> <body><div><p>苏丹红事件</p></div> <body> 12px这里没有行高没有写单位&#xff0c;子类继承父类的1.5倍&#xff0c;就是14*…

AndroidStudio精品插件集

官网 项目地址&#xff1a;Github博客地址&#xff1a;Studio 精品插件推荐 使用需知 所有插件在 Android Studio 2022.3.1.18&#xff08;长颈鹿&#xff09;上测试均没有问题&#xff0c;推荐使用此版本Android Studio 2022.3.1.18&#xff08;长颈鹿&#xff09;正式版下…

Django之十二:模板的继承+用户列表

模板的继承 新建layout.html&#xff1a; {% load static %} <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><link rel"stylesheet" href"{% static plugins…

经典网络架构-ResNet

# 引言 深度残差网络的提出是深度学习领域的里程碑事件&#xff0c;它使得网络可以做大做深&#xff0c;现在主流的网络中都有残差结构 # 问题 - ##深度网络的退化 深度网络有一个普遍的问题&#xff1a;随着网络层数的增加&#xff0c;准确率是先增后减的&#xff0c;准确率增…

十四天学会C++之第二天(函数和库)

1. 函数的定义和调用 在C中&#xff0c;函数是组织和结构化代码的关键工具之一。它们允许您将一段代码封装成一个可重复使用的模块&#xff0c;这有助于提高代码的可读性和维护性。 为什么使用函数&#xff1f; 函数在编程中的作用不可小觑。它们有以下几个重要用途&#xf…

【数据结构---排序】很详细的哦

本篇文章介绍数据结构中的几种排序哦~ 文章目录 前言一、排序是什么&#xff1f;二、排序的分类 1.直接插入排序2.希尔排序3.选择排序4.冒泡排序5.快速排序6.归并排序总结 前言 排序在我们的生活当中无处不在&#xff0c;当然&#xff0c;它在计算机程序当中也是一种很重要的操…

【C语言】青蛙跳台阶 —— 详解

一、问题描述 跳台阶_牛客题霸_牛客网 (nowcoder.com) LCR 127. 跳跃训练 - 力扣&#xff08;LeetCode&#xff09; 二、解题思路 1、当 n 1 时&#xff0c;一共只有一级台阶&#xff0c;那么显然青蛙这时就只有一种跳法 2、当 n 2 时&#xff0c;一共有两级台阶&#xff…

你写过的最蠢的代码是?——前端篇

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页: &#x1f405;&#x1f43e;猫头虎的博客&#x1f390;《面试题大全专栏》 &#x1f995; 文章图文并茂&#x1f996…

LLVM 插桩 LLVM IR PHI指令

今天在进行 LLVM 插桩时&#xff0c;遇到一个神奇的报错 PHI nodes not grouped at top of basic block!%12 phi i32 [ %.pre, %if.then15 ], [ %argc, %maybe_close_fd_mask.exit ], !dbg !381 label %if.end19 PHI nodes not grouped at top of basic block!%18 phi i32 […

线程的状态与转换,组织与控制

进程和线程分析极其相似。见个人博客&#xff1a;进程的状态与转换以及组织方式 1.线程的状态与转换 2.线程的组织与控制 1.线程控制块&#xff08;TCB&#xff09; 2.线程表

运行中的代码,看不太懂的地方,可以实时查看运行值,以做进一步的判断

运行中的代码&#xff0c;看不太懂的地方&#xff0c;可以实时查看运行值&#xff0c;以做进一步的判断 运行中的代码&#xff0c;看不太懂的地方&#xff0c;可以实时查看运行值&#xff0c;以做进一步的判断 运行中的代码&#xff0c;看不太懂的地方&#xff0c;可以实时查看…