题目链接 : https://www.lanqiao.cn/problems/3521/learning/?subject_code=1&group_code=3&match_num=14&match_flow=1&origin=cup
思想 : 用堆维护最大值最小值即可 暴力实现 复杂度 N^2 * log(N^2)
代码:
#include<bits/stdc++.h>
using namespace std;#define int long long
typedef array<int,3> arr;const int N = 1001;
const int mod=998244353;int n,m,a,b;
int g[N][N];signed main(){ios::sync_with_stdio(false);cin.tie(nullptr);cin>>n>>m>>a>>b;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){cin>>g[i][j];}}priority_queue<arr,vector<arr>,greater<arr>> heap;priority_queue<arr> q;int ans=0;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){q.push({g[i][j],i,j});heap.push({g[i][j],i,j});if(i>=a&&j>=b){auto x1=q.top();auto x2=heap.top();while(x1[1]<=i-a||x1[2]<=j-b){q.pop(),x1=q.top();}while(x2[1]<=i-a||x2[2]<=j-b){heap.pop(),x2=heap.top();}ans=(ans+1ll*(x1[0]*x2[0]%mod))%mod;}}}cout<<ans<<"\n";return 0; }