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

题目

代码

cpp 复制代码
#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;
}
相关推荐
北域码匠5 小时前
高通滤波算法深度解析(High-Pass Filter)
stm32·算法·c#·数字信号处理·嵌入式开发·滤波算法·高通滤波
指掀涛澜天下惊6 小时前
强化学习进阶篇八 策略梯度算法
深度学习·学习·算法·强化学习
乌萨奇也要立志学C++6 小时前
【洛谷】kmp算法
开发语言·算法
禹凕6 小时前
Dijkstra算法详解与应用
python·算法
YaraMemo7 小时前
元启发式算法框架
人工智能·算法·5g·信息与通信·启发式算法·信号处理
weixin_307779137 小时前
一维无粘 Burgers 方程的激波形成问题:MacCormack 格式求解
c++·算法·matlab
HugoStudio_SWAN8 小时前
洛谷 B4500 / B4449 / B3843 凯撒密码、密码强度与密码合规——加密与安全的三道门
c++·学习·程序人生·算法·安全
枫叶林FYL9 小时前
【群体智能集群控制工程实践】第3章 一致性协同算法
算法
禹凕9 小时前
滑动窗口算法实战指南
python·算法
DisonTangor9 小时前
【腾讯混元雪耻归来】 Hy4 preview:770B 参数 MoE 旗舰模型,1M 上下文全面开源
人工智能·算法·开源·aigc·腾讯云·腾讯云ai代码助手