题意:给出一个n*m的矩形。询问矩形上所有的a*b的小矩形的最小值之和。

解法:我们先对每一行用单调栈维护c[i][j]代表从原数组的mp[i][j]到mp[i][j+b-1]的最小值(具体维护方法是单调队列维护滑动窗口就不细讲了)。然后我们得到一个新数组c[i][j],然后用几乎同样的办法维护每一列d[i][j]代表从数组c[i][j]到c[i+a-1][j]的最小值。仔细思考此时我们得到的d[i][j]是什么?此时我们得到的d[i][j]就是在原数组mp[i][j]中以(i,j)为左上角的长为a宽为b的矩形的最小值。(如果这里不理解就是没理解c数组怎么来的,然后d数组怎么来的)。那么我们就把答案就起来就可以了。

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N=+;
int n,m,a,b,g,x,y,z;
int r[N*N],q[N],mp[N][N],c[N][N],d[N][N]; int main()
{
cin>>n>>m>>a>>b;
cin>>g>>x>>y>>z;
r[]=g;
for (int i=;i<=n*m;i++) r[i]=((LL)r[i-]*x+y)%z;
for (int i=;i<=n;i++)
for (int j=;j<=m;j++)
mp[i][j]=r[(i-)*m+j-]; for (int i=;i<=n;i++) {
int h=,t=;
for (int j=;j<=b;j++) {
while (h<=t && mp[i][j]<mp[i][q[t]]) t--;
q[++t]=j;
}
for (int j=;j<=m;j++) {
while (h<=t && j>q[h]) h++;
if (h<=t) c[i][j]=mp[i][q[h]];
if (j+b<=m) {
while (h<=t && mp[i][j+b]<mp[i][q[t]]) t--;
q[++t]=j+b;
}
}
}
for (int j=;j<=m;j++) {
int h=,t=;
for (int i=;i<=a;i++) {
while (h<=t && c[i][j]<c[q[t]][j]) t--;
q[++t]=i;
}
for (int i=;i<=n;i++) {
while (h<=t && i>q[h]) h++;
if (h<=t) d[i][j]=c[q[h]][j];
if (i+a<=n) {
while (h<=t && c[i+a][j]<c[q[t]][j]) t--;
q[++t]=i+a;
}
}
} LL ans=;
for (int i=;i<=n-a+;i++) for (int j=;j<=m-b+;j++) ans+=d[i][j];
cout<<ans<<endl;
return ;
}

Codeforces 1195E. OpenStreetMap (单调队列)的更多相关文章

  1. Codeforces - 1195E - OpenStreetMap - 单调队列

    https://codeforc.es/contest/1195/problem/E 一个能运行但是会T的版本,因为本质上还是\(O(nmab)\)的算法.每次\(O(ab)\)初始化矩阵中的可能有用 ...

  2. Codeforces 1195E OpenStreetMap 单调队列套单调队列

    题意:给你一个n * m的矩阵,问所有的a * b的子矩阵的最小的元素的和是多少.题目给出了矩阵中的数的数据生成器. 思路:如果这个问题是1维的,即求所有区间的最小元素的和,用单调队列O(n)就可以做 ...

  3. CodeForces 602D 【单调队列】【简单数学】

    题意: 给你n个数,m次询问,每次询问给l和r代表l和r中间所有子区间中特征值的和. 特征值的定义是在这个区间中找i和j使得|tmp[i]-tmp[j]|/|j-i|最大. 思路: 首先是特征值的定义 ...

  4. Codeforces Round #574 (Div. 2) E. OpenStreetMap 【单调队列】

    一.题目 OpenStreetMap 二.分析 对于二维空间找区间最小值,那么一维的很多好用的都无法用了,这里可以用单调队列进行查找. 先固定一个坐标,然后进行一维的单调队列操作,维护一个区间长度为$ ...

  5. CodeForces 164 B. Ancient Berland Hieroglyphs 单调队列

    B. Ancient Berland Hieroglyphs 题目连接: http://codeforces.com/problemset/problem/164/B Descriptionww.co ...

  6. Codeforces Round #189 (Div. 1) B. Psychos in a Line 单调队列

    B. Psychos in a Line Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/problemset/p ...

  7. Codeforces Beta Round #6 (Div. 2 Only) 单调队列

    题目链接: http://codeforces.com/contest/6/problem/E E. Exposition time limit per test 1.5 secondsmemory ...

  8. Codeforces 445A Boredom(DP+单调队列优化)

    题目链接:http://codeforces.com/problemset/problem/455/A 题目大意:有n个数,每次可以选择删除一个值为x的数,然后值为x-1,x+1的数也都会被删除,你可 ...

  9. Codeforces 1029B. Creating the Contest 动态规划O(nlogn)解法 及 单调队列O(n)解法

    题目链接:http://codeforces.com/problemset/problem/1029/B 题目大意:从数组a中选出一些数组成数组b,要求 b[i+1]<=b[i]*2 . 一开始 ...

随机推荐

  1. Spring 事物机制(总结)

    Spring两种事物处理机制,一是声明式事物,二是编程式事物 声明式事物 1)Spring的声明式事务管理在底层是建立在AOP的基础之上的.其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加 ...

  2. css3系列--概述

    CSS3分成了不同类别,称为“modules”.而每一个“modules”都有于CSS2中额外增加的功能,以及向后兼容.CSS3早于1999年已经开始制订.[18]直到2011年6月7日,CSS 3 ...

  3. Flutter-RaisedButton

    RaisedButton({ Key key, //点击按钮的回调出发事件 @required VoidCallback onPressed, //水波纹高亮变化回调 ValueChanged< ...

  4. ConcurrentSkipListMap--跳表的简单使用

    import java.util.Map; import java.util.concurrent.ConcurrentSkipListMap; /** * 跳表的使用 */ public class ...

  5. js 事件对象event

    在触发DOM上的某个事件时,会产生一个事件对象event.这个对象中包含着所有与事件有关的信息.包括导致事件的元素,事件的类型以及其他与特定事件相关的信息. <body> <a hr ...

  6. C++ 穷举算法 鸡兔同笼

    #include "stdio.h" int qiongju(int head, int foot, int *chicken, int *rabbit) { int re, i, ...

  7. 多线程模拟生产者消费者示例之BlockQueue

    public class Test { public static void main(String[] args){ //创建一个阻塞队列,边界为1 BlockingQueue<String& ...

  8. 4412 搭建和测试NFS服务器

    一.NFS网络文件系统 NFS是Network FileSystem的缩写,NFS是基于UDP/IP协议的应用.它的最大功能就是可以通过网络让不同的机器,不通的操作系统彼此共享文件, 可以通过NFS挂 ...

  9. python3安装pdfminer并使用

    1.python3不同与2版本不能使用pdfminer pip install pdfminer3k 2.使用pdfminer解析相应文档并保存到相应的文件夹中 # encoding : udf-8 ...

  10. LOJ 2980 「THUSCH 2017」大魔法师——线段树

    题目:https://loj.ac/problem/2980 线段树维护矩阵. 然后是 30 分.似乎是被卡常了?…… #include<cstdio> #include<cstri ...