C. Maximum Subrectangle(思维 + 考察两个数组相乘得到的矩阵的含义)

news2025/1/14 18:30:59

Problem - C - Codeforces

给定两个正整数数组 a 和 b,长度分别为 n 和 m。

定义矩阵 c 为一个 n×m 的矩阵,其中 ci,j=ai⋅bj。

你需要在矩阵 c 中找到一个子矩形,使得它的元素之和最多为 x,并且它的面积(即元素总数)尽可能大。

具体来说,你需要找到最大的数字 s,使得能够选择整数 x1、x2、y1、y2 满足 1≤x1≤x2≤n,1≤y1≤y2≤m,(x2−x1+1)×(y2−y1+1)=s 且

∑i=x1x2∑j=y1y2ci,j≤x。

输入格式 第一行包含两个整数 n 和 m(1≤n,m≤2000)。

第二行包含 n 个整数 a1,a2,…,an(1≤ai≤2000)。

第三行包含 m 个整数 b1,b2,…,bm(1≤bi≤2000)。

第四行包含一个整数 x(1≤x≤2⋅109)。

输出格式 如果能够选择四个整数 x1、x2、y1、y2 满足 1≤x1≤x2≤n,1≤y1≤y2≤m 并且 ∑x2i=x1∑y2j=y1ci,j≤x,则输出所有这样的四元组中 (x2−x1+1)×(y2−y1+1) 的最大值,否则输出 0。

Examples

input

Copy

3 3
1 2 3
1 2 3
9

output

Copy

4

input

Copy

5 1
5 4 2 4 5
2
5

output

Copy

1

题解:
如果一开始啥也不考虑,直接模拟数组,找二维前缀和,这道题就寄了,

我们应该从题目根本去考虑,这个得到的矩阵究竟意味着什么

真的稍微仔细想想,我们其实就可以发现,矩阵中任意一个子矩阵和,都是两个数组连续段的和相乘的结果

到这里这题就基本解出来了,接着暴力求两个数组长度为x的连续子段最小的和即可,

然后枚举长度1~n和1~m的两个数组相乘的结果,矩阵最大且小于等于k的即为答案

#include <cstdio>
#include <cstring>
#include <algorithm>
#include<iostream>
#include<vector>
#include<set>
#include<map>
#include<cmath>
#include<queue>
using namespace std;
typedef long long ll;
#define int long long
typedef pair<int,int> PII;
int mod = 1e9 + 7;
int a[2005];
int b[2005];
int r[2004];
int c[2004];
void solve()
{
	int n,m;
	cin >> n >> m;
	for(int i = 1;i <= n;i++)
	{
		cin >> a[i];
		a[i] = a[i - 1] + a[i];
	}
	for(int i = 1;i <= m;i++)
	{
		cin >> b[i];
		b[i] = b[i - 1] + b[i];
	}
	memset(r,0x3f,sizeof r);
	memset(c,0x3f,sizeof c);
	for(int i = 1;i <= n;i++)
	{
		for(int j = 0;j < i;j++)
		r[i - j] = min(r[i - j],a[i] - a[j]);
	}
	int k;
	cin >> k;
	for(int i = 1;i <= m;i++)
	{
		for(int j = 0;j < i;j++)
		c[i - j] = min(c[i - j],b[i] - b[j]);
	}
	int ans = 0;
	for(int i = 1;i <= n;i++)
	{
		for(int j = 1;j <= m;j++)
		{
			if(r[i]*c[j] <= k)
			ans = max(ans,i*j);
		}
	}
	cout << ans;
	
}

signed main()
{
//	ios::sync_with_stdio(0 );
//	cin.tie(0);cout.tie(0);
	int t = 1;
//	cin >> t;
	while(t--)
	{
		solve(); 
	}
}

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

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

相关文章

考pmp有什么好处?

PMP证书报名条件要求高&#xff0c;这是众所周知的事&#xff0c;那你通过了PMP考试&#xff0c;就证明你是有一定能力的&#xff0c;重要的是&#xff0c;你已经有了至少半年的项目管理经验&#xff0c;并且在你申请考试的前六年内&#xff0c;累计项目管理达三年。 PMP有什么…

【Hadoop-Yarn】Yarn的常用命令

【Hadoop-Yarn】Yarn的常用命令 1&#xff09;查看任务列表2&#xff09;杀死任务3&#xff09;查看日志4&#xff09;根据 Application 状态过滤任务5&#xff09;查询 Container 日志6&#xff09;查看尝试运行的任务7&#xff09;yarn container 查看容器8&#xff09;yarn …

Conda 安装 OpenCV

1、conda 切换虚拟环境 activate 虚拟环境名称 温馨提示&#xff1a;查询虚拟环境列表 conda env list 2、conda 查看安装源 conda config --show-sources 我本地安装源为: Index of /anaconda/pkgs/free/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror 修改c…

Qt音视频开发44-本地摄像头推流(支持分辨率/帧率等设置/实时性极高)

一、前言 本地摄像头推流和本地桌面推流类似&#xff0c;无非就是采集的设备源头换成了本地摄像头设备而不是桌面&#xff0c;其他代码完全一样。采集本地摄像头实时视频要注意的是如果设置分辨率和帧率&#xff0c;一定要是设备本身就支持的&#xff0c;如果不支持那就歇菜&a…

常规项目风险识别的规范流程和方法

一、识别风险输入 识别项目风险&#xff0c;首先需要对项目管理计划、项目文件、协议、采购文档、事业环境因素、组织过程资产等进行风险识别。 项目管理计划是指&#xff1a;需求、进度、成本、质量、资源、风险等管理计划以及范围基准、进度基准、成本基准。而项目文件指&…

普通2本,去过字节外包,到现在年薪25W+的测试开发,我的2年转行心酸经历...

个人简介 我是一个普通二本大学机械专业毕业&#xff0c;17年毕业&#xff0c;19年转行&#xff0c;目前做IT行业的软件测试已经有3年多&#xff0c;职位是高级测试工程师&#xff0c;坐标上海… 我想现在我也有一点资格谈论关于转行这个话题&#xff1b;希望你在决定转行之前…

Python爬虫-xpath方法爬虫技术分享,更高效,代码简洁!

这里写目录标题 一、获取文档树对象二、文本转化文档树对象文件转化文档树对象节点、元素、属性、内容路径表达式通配符谓语多个路径函数实战信息 ↓ ↓ ↓ 加下方名片找我&#xff0c;直接拿源码还有案例 ↓ ↓ ↓ 一、获取文档树对象 通过Xpath 获取文档的对象&#xff0c;获…

matlab定义函数

1新建文件 首先建立M文件或直接点击&#xff08;File/New/Function)建立函数文件&#xff0c;其中函数文件的格式是&#xff1a; function [输出变量] 函数名称(输入变量&#xff09; % 注释 % 函数体 2函数语法 2.1基本语法 function yf(x) %函数的声明 yx^2 就是建立了一个y…

边框虚线滚动动画特效

边框线条效果如上 /*边框虚线滚动动画特效*/.border-animate {background: linear-gradient(90deg, gray 60%, transparent 60%) repeat-x left top/10px 1px,linear-gradient(0deg, gray 60%, transparent 60%) repeat-y right top/1px 10px,linear-gradient(90deg, gray 60%,…

今天面了一个来字节要求月薪23K,明显感觉他背了很多面试题...

最近有朋友去字节面试&#xff0c;面试前后进行了20天左右&#xff0c;包含4轮电话面试、1轮笔试、1轮主管视频面试、1轮hr视频面试。 据他所说&#xff0c;80%的人都会栽在第一轮面试&#xff0c;要不是他面试前做足准备&#xff0c;估计都坚持不完后面几轮面试。 其实&…

用于2.4GHz ISM频段FHSS解决方案的射频IC

比较了 WLAN 和相关系统。IEEE802.11b FHSS 支持 1.6Mbps 数据传输。MAX2644 SiGe LNA用作2.5GHz频段的PA驱动器和接收器低噪声放大器&#xff08;LNA&#xff09;。MAX2240和MAX2242功率放大器&#xff08;PA&#xff09;产生~20dBm输出&#xff0c;具有所需的线性度。MAX2754…

EasyRecovery15Mac中文电脑版安装详细操作教程

EasyRecovery是一款操作安全、恢复性比较高的数据恢复工具&#xff0c;小伙伴们可以使用EasyRecovery恢复各种各样被删除的文件、视频、图片等。EasyRecovery还可以支持恢复被格式化的媒体文件&#xff0c;只是使用EasyRecovery恢复时时间较久。如果小伙伴们有误删除的文件需要…

第三十三章 Unity Mecanim动画系统(下)

本章节&#xff0c;我们继续讲解Unity的 Mecannim 动画系统。在上一章节中&#xff0c;我们设置了动画过渡&#xff0c;但是还没有为这些动画过渡设置过渡条件。这个过渡条件需要在“Animator”窗口中设置。这个窗口的左边是用来编辑“动画层”和“动画参数”的。这里的“动画参…

Redis的20种使用场景

本文介绍Redis除了缓存以外的使用场景。 测试源码&#xff1a;https://github.com/vehang/ehang-spring-boot/tree/main/spring-boot-011-redis 1缓存 本文假定你已经了解过Redis&#xff0c;并知晓Redis最基础的一些使用&#xff0c;如果你对Redis的基础API还不了解&#xff…

Kubernetes服务搭建[配置-部署](Kubeadm)

文章目录 **[1 — 7] ** [ 配置K8S主从集群前置准备操作 ]一&#xff1a;主节点操作 查看主机域名->编辑域名1.1 编辑HOST 从节点也做相应操作1.2 从节点操作 查看从节点102域名->编辑域名1.3 从节点操作 查看从节点103域名->编辑域名 二&#xff1a;安装自动填充&…

Android - 动画

一、概念 补间动画 ViewAnimation&#xff08;Tween&#xff09;&#xff1a;不改变view的位置和属性。属性动画PeopertyAnimation&#xff1a;view的属性根据执行的动画发生真实的改变。帧动画 DrawableAnimation&#xff08;Frame&#xff09;&#xff1a; 二、补间动画 Vi…

SPSS如何进行使用时间序列模型之案例实训?

文章目录 0.引言1.时间序列数据平稳处理2.指数平滑法建模3.ARIMA建模4.季节性分解 0.引言 因科研等多场景需要进行绘图处理&#xff0c;笔者对SPSS进行了学习&#xff0c;本文通过《SPSS统计分析从入门到精通》及其配套素材结合网上相关资料进行学习笔记总结&#xff0c;本文对…

MYSQL用户组管理

1&#xff1a;使用明文密码创建用户 使用密文密码创建用户 1.2 查看用户信息 1.3 重命名用户 rename 1.4 删除用户信息 drop 1.5 修改当前登录用户的密码 set password password(123456); 1.6 修改其他用户的密码 set password for nancylocalhost password(abc123); 1.7…

2023年常见的20道JavaScript面试题及其答案解析,你知道多少

JavaScript中typeof操作符有哪些返回值&#xff1f; 答案&#xff1a;typeof操作符返回字符串数据类型。可能的返回值有&#xff1a;“undefined”、“boolean”、“number”、“string”、“object"和"function”。如何检查一个变量是否为数组&#xff1f; 答案&…

【JavaEE】Thread类

目录 前言 1、创建一个线程 1.1、 体会多线程的执行 1.2、体会单线程的执行 1.3、sleep方法&#xff08;休眠&#xff09; 1.4、通过第三方程序来观察线程详情 1.5、创建线程的方式 1.5.1、继承Thread类&#xff0c;重写run方法来创建线程 1.5.2、实现Runnable接口&am…