题目 3161: 蓝桥杯2023年第十四届省赛真题-子矩阵

server/2024/10/20 6:01:18/

 题目

 

代码

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 1010, mod = 998244353;
int g[N][N];
int rmin[N][N], rmax[N][N];
ll mmin[N][N], mmax[N][N];
int q[N * N];
int hh, tt;
int n, m, a, b;
int main()
{cin >> n >> m >> a >> b;for (int i = 1; i <= n; i++){for (int j = 1; j <= m; j++){cin >> g[i][j];}}for (int i = 1; i <= n; i++){hh = 0, tt = -1;for (int j = 1; j <= m; j++){if (hh <= tt && j - q[hh] + 1 > b)hh++;while (hh <= tt && g[i][q[tt]] >= g[i][j])tt--;q[++tt] = j;if (j >= b)rmin[i][j - b + 1] = g[i][q[hh]];}}for (int j = 1; j <= m; j++){hh = 0, tt = -1;for (int i = 1; i <= n; i++){if (hh <= tt && i - q[hh] + 1 > a)hh++;while (hh <= tt && rmin[q[tt]][j] >= rmin[i][j])tt--;q[++tt] = i;if (i >= a)mmin[i - a + 1][j] = rmin[q[hh]][j];}}for (int i = 1; i <= n; i++){hh = 0, tt = -1;for (int j = 1; j <= m; j++){if (hh <= tt && j - q[hh] + 1 > b)hh++;while (hh <= tt && g[i][q[tt]] <= g[i][j])tt--;q[++tt] = j;if (j >= b)rmax[i][j - b + 1] = g[i][q[hh]];}}for (int j = 1; j <= m; j++){hh = 0, tt = -1;for (int i = 1; i <= n; i++){if (hh <= tt && i - q[hh] + 1 > a)hh++;while (hh <= tt && rmax[q[tt]][j] <= rmax[i][j])tt--;q[++tt] = i;if (i >= a)mmax[i - a + 1][j] = rmax[q[hh]][j];}}ll ans = 0;for (int i = 1; i + a - 1 <= n; i++){for (int j = 1; j + b - 1 <= m; j++){ans = (ans + (mmin[i][j] * mmax[i][j]) % mod) % mod;}}cout << ans;
}


http://www.ppmy.cn/server/133261.html

相关文章

Java基础-IO基础

IO是指input/output&#xff0c;即输入和输出。输入和输出是以内存为中心的&#xff1a; input 从外部往内存输入数据&#xff0c;比如硬盘中的数据写入内存等。 output 从内存往外输出数据&#xff0c;比如内存数据写入硬盘等。 File File类表示一个文件或者一个目录。使用F…

iOS--NSURLSession Alamofire流程源码解析(万字详解版)

一、NSURLSession NSURLSession的主要功能是发起网络请求获取网络数据&#xff0c;是Apple的网络请求原生库之一。Alamofire就是对NSURLSession的封装&#xff0c;如果对NSURLSession不熟悉的话&#xff0c;那么Alamofire源码看起来会比较费劲的。因此我们先简单学习下NSURLSe…

wpf grid 的用法

WPF中的Grid是一种布局控件&#xff0c;可用于将子控件按照行和列的方式排列。 以下是Grid控件的用法&#xff1a; 在XAML文件中&#xff0c;添加一个Grid控件&#xff1a; <Grid> </Grid>在Grid控件中&#xff0c;添加行和列定义&#xff1a; <Grid><…

ue5 扇形射线检测和鼠标拖拽物体

这里的NumTrace是要发射几根射线&#xff0c;Degrees Per Trace是每根射线之间的角度&#xff0c; 例如 要在角色面前实现一个180度的扇形射线检测&#xff0c;就需这两个变量乘起来等于180 TraceLength是射线的长度 下面是鼠标拖动物体逻辑&#xff0c;很简单 这里的Floor和…

HTML(五)列表详解

在HTML中&#xff0c;列表可以分为两种&#xff0c;一种为有序列表。另一种为无序列表 今天就来详细讲解一下这两种列表如何实现&#xff0c;效果如何 1.有序列表 有序列表的标准格式如下&#xff1a; <ol><li>列表项一</li><li>列表项二</li>…

Ubuntu22.04中安装英伟达驱动并部署Pytorch深度学习环境

安装英伟达驱动 本文基于windows10ubuntu22.04双系统&#xff0c;给ubuntu22.04安装英伟达驱动。 安装必要。依赖 sudo apt update # 获取最新的软件包信息 sudo apt upgrade # 升级软件包 sudo apt install g sudo apt install gcc sudo apt install make禁用ubuntu默认驱动…

Vue3工程基本创建模板

创建vue工程 执行这两个绿色的命令 输入 code . 打开vscode 安装依赖 Element - plus npm install element-plus --save 在vscode的 main.js 换这个代码 // main.ts import { createApp } from vue import ElementPlus from element-plus import element-plus/dist/inde…

【Kafka】Kafka Producer的缓冲池机制原理

如何初始化的bufferPool的 在初始化的时候 初始化BufferPool对象 // 设置缓冲区 this.accumulator new RecordAccumulator(xxxxx,其他参数,new BufferPool(this.totalMemorySize, config.getInt(ProducerConfig.BATCH_SIZE_CONFIG), metrics, time, PRODUCER_METRIC_GROUP_N…