[COCI2021-2022#6] Zemljište

news/2025/1/15 14:36:51/文章来源:https://www.cnblogs.com/maniubi/p/18407230

[COCI2021-2022#6] Zemljište

题意

给出一个矩阵,一个子矩阵的权值为 \(|m-a|+|m-b|\)\(m\) 为子矩阵数值和,\(a,b\) 为给出的数。

求该矩阵权值最小的子矩阵。

思路

枚举子矩阵上界和下界,左右界使用双指针枚举,令 \(a<b\)

对于每个左界,不断扩展右界直到子矩阵和大于 \(b\),因为再往右扩展一定不优。

每次扩展时统计答案即可。

代码

#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N = 505 + 5;
int r, s, a, b, ans = 1e9;
int v[N][N], sum[N][N];
int val(int x_1, int y_1, int x_2, int y_2) {return sum[x_2][y_2] - sum[x_1 - 1][y_2] - sum[x_2][y_1 - 1] + sum[x_1 - 1][y_1 - 1];
}
int calc(int x_1, int y_1, int x_2, int y_2) {return abs(a - val(x_1, y_1, x_2, y_2)) + abs(b - val(x_1, y_1, x_2, y_2));
}
void solve() {cin >> r >> s >> a >> b;if (a > b) swap(a, b);for (int i = 1; i <= r; i ++)for (int j = 1; j <= s; j ++)cin >> v[i][j];for (int i = 1; i <= r; i ++)for (int j = 1; j <= s; j ++)sum[i][j] = sum[i - 1][j] + sum[i][j - 1] + v[i][j] - sum[i - 1][j - 1];for (int i = 1; i <= r; i ++) {for (int j = i; j <= r; j ++) {for (int L = 1, R = 1; L <= s; L ++) {R = max(L, R);while (R < s && val(i, L, j, R) <= b) ans = min(ans, calc(i, L, j, R)), R ++;ans = min(ans, calc(i, L, j, R));}}}cout << ans << "\n";
} 
signed main() {int T = 1;
//	cin >> T;while (T --)solve();return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【整理】虚拟地址全解析:操作系统内存管理与进程调度的深度揭秘!

原创 freedom47概述 在现代计算机系统中,虚拟地址是内存管理的关键组成部分。 虚拟地址不仅帮助操作系统高效地管理物理内存,还在进程的内存分配中发挥重要作用。 本文将详细介绍虚拟地址的定义、作用、操作系统的内存管理、进程内存分配、32 位与 64 位架构的内存分配差异,…

2024.9.10 搜索引擎+字体

今天是人工智能的第一节课!我们主要学了引擎的搜索以及字体两部分,干货满满!有一种走了20年弯路的感觉(⊙︿⊙)第一次拥有了博客账号,在我小学的时候我妈妈会用博客记录生活,对于博客有一种熟悉的陌生感hhha 【知识小课堂1】 搜索引擎分为两类: 一、目录式分类搜索引擎,…

The Teachers Day gift a future teacher wants

`#include include void printBanner(); void printHeart(); void printFlower(); int main() { std::cout << "\n"; printBanner(); std::cout << std::endl; printFlower(); std::cout << std::endl; printHeart();return 0;}`点击查看代码 vo…

解决路由缓存问题

路由缓存问题即:当再vue3中使用带参数的路由时,随着路由跳转,组件被重新复用,不能正常执行生命周期 尤其我们通常在onMounted中使用的请求的发送,那么如何解决呢 1.粗暴的方法:强制替换销毁 vue官方曾说,key可以强制替换一个元素或者组件,而不是复用它 那么我们可以在组件中使用…

第二章python基本语法

位运算符 例1:检测列表里重复元素l=[1,3,5,7,8,3,9,4,2,5,6]flag=0for i in range(len(l)): if(1<<l[i]&flag)>0: print("重复:%d"%l[i]) flag|=(1<<l[i])#flag=flag|(1<<l[i]) 注:flag记录已经出现过的元素,其实用对应位为…

VS安装插件,按CTRL+鼠标左键进入函数

1。菜单栏-》工具-》扩展和更新 2.进入扩展和更新,点击联机,vs库,右上输入“Go To Definition” 3.搜索 出插件,选择作者是“Noah Richards” 4.下载安装重启即可hello,world~~~

【Azure Service Bus】创建 ServiceBus 的Terraform脚本报错GetAuthorizationRule: Invalid input

问题描述 在使用Terraform部署Service Bus时候,遇见了如下报错: Error: Error making Read request on Azure ServiceBus Topic Authorization Rule : servicebus.TopicsClient#GetAuthorizationRule: Invalid input: autorest/validation: validation failed: parameter=aut…

IIC工作模式时序分析

IIC工作模式时序分析 此处利用IO口模拟IIC通信过程中的时序。通信过程 在IIC通信过程SDA存在两种模式(接收模式和发送模式),发送或接受一个字节(器件的7个bit+1个bit方向(1 - 读方向,0 - 写方向)) 模式配置当SDA为接入模式接收了1字节数据后在第九个时钟脉冲期间就要变…

第四章 视图(views)

4.视图 4.1 文件or文件夹4.2 相对和绝对导入urls注意实现:不要再项目根目录做相对导入。 原则:绝对导入 相对导入(层级深)4.3 视图参数 urlpatterns = [path(login/, account.login, name="login"),path(auth/, order.auth, name=auth), ]from django.shortcuts …