Description

约翰决定培育新的玉米品种以提高奶牛的产奶效率。约翰所有的土地被分成 N ×N 块,其中第 r行第 c 列的玉米质量为 Ar,c。他打算找一块质量比较均匀的土地开始自己的实验。经过前期考察,他已经锁定了 K 片区域作为实验基地的候选,其中第 i 片区域是从 Ri 行 Ci 列开始,到 Ri + B − 1 行Ci +B −1 列结束的一个 B ×B 的区域。请帮助约翰计算一下,在这些候选区域里,玉米的最高质量与最低质量之差分别是多少。

Input Format

• 第一行:三个整数 N,B 和 K,1 ≤ B ≤ N ≤ 250,1 ≤ K ≤ 10^5

• 第二行到 N +1 行:第 i+1 行有 N 个整数,分别表示 Ai,1 到 Ai,N,对所有 1 ≤ j ≤ N,满足0 ≤ Ai,j ≤ 250

• 第 N + 2 行到第 N + K + 1 行:第 N + i + 1 行有两个整数 Ri 和 Ci,1 ≤ Ri,Ci ≤ N

Output Format

• 第一行到第 K 行:第 i 行表示第 i 片候选区域中最高质量与最低质量之差

Solution

显然的单调队列,\(mx[i][j]\)表示第\(i\)行区间\([j-b,j]\)的最大值,\(mi[i][j]\)同理,写个单调队列即可,

时间复杂度\(O(n^2)\),

Code

#include <cstdio>
#include <algorithm>
#include <list>
#define N 260
using namespace std; list<int> Qmx,Qmi;
int n,b,k,A[N],mx[N][N],mi[N][N]; inline int read() {
int x=0,f=1;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch = getchar();}
while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch = getchar();}
return x*f;
} int main(){
n=read(),b=read(),k=read();
for(int i=1;i<=n;++i){
Qmx.clear();Qmi.clear();
for(int j=1;j<=n;++j){
A[j]=read();
while(!Qmx.empty()&&A[Qmx.back()]<=A[j]) Qmx.pop_back();
Qmx.push_back(j);
while(!Qmx.empty()&&Qmx.front()<=j-b) Qmx.pop_front();
mx[i][j]=A[Qmx.front()]; while(!Qmi.empty()&&A[Qmi.back()]>=A[j]) Qmi.pop_back();
Qmi.push_back(j);
while(!Qmi.empty()&&Qmi.front()<=j-b) Qmi.pop_front();
mi[i][j]=A[Qmi.front()];
}
} while(k--){
int x=read(),y=read();
int Max=-1e9,Min=1e9;
for(int i=x;i<=x+b-1;++i){
Max=max(Max,mx[i][y+b-1]);
Min=min(Min,mi[i][y+b-1]);
}
printf("%d\n",Max-Min);
}
return 0;
}

[USACO]玉米实验(单调队列)的更多相关文章

  1. 【USACO】玉米实验(单调队列)

    Description 约翰决定培育新的玉米品种以提高奶牛的产奶效率.约翰所有的土地被分成 N ×N 块,其中第 r行第 c 列的玉米质量为 Ar,c.他打算找一块质量比较均匀的土地开始自己的实验.经 ...

  2. 【USACO】又买饲料 单调队列dp

    题目描述 约翰开车回家,又准备顺路买点饲料了(咦?为啥要说“又”字?)回家的路程一共有 E 公里, 这一路上会经过 N 家商店,第 i 家店里有 F i 吨饲料,售价为每吨 C i 元.约翰打算买 K ...

  3. USACO 2009 Open 干草塔 Tower of Hay(贪心+单调队列优化DP)

    https://ac.nowcoder.com/acm/contest/1072/B Description 为了调整电灯亮度,贝西要用干草包堆出一座塔,然后爬到牛棚顶去把灯泡换掉.干草包会从传送带上 ...

  4. 单调队列(数列中长度不超过k的子序列和的最值)

    ★实验任务 小 F 很爱打怪,今天因为系统 bug,他提前得知了 n 只怪的出现顺序以及击 倒每只怪得到的成就值 ai.设第一只怪出现的时间为第 1 秒,这个游戏每过 1 秒 钟出现一只新怪且没被击倒 ...

  5. [acmm week12]二分+dp+单调队列

    1004 抄作业         Time Limit: 1sec    Memory Limit:256MB Description Zfree虽然平时很爱学习,但是他迫于生活所迫(比如设计cpu实 ...

  6. 单调队列练习题(oj p1157 p1158 p1159)

    p1157是很气人的...自从评测机挂了后,速度就特别慢,cin已经过不了了,然而我不知道,就各种**的提交 惨兮兮惨兮兮,这还是开了小号(通过率堪忧.jpg...)... 思路就是单调队列维护,用队 ...

  7. [bzoj4698][Sdoi2008]Sandy的卡片_后缀数组_二分/单调队列_双指针

    Sandy的卡片 bzoj-4698 Sdoi-2008 题目大意:题目链接. 注释:略. 想法: 这个题跟一个Usaco的题特别像.我们把这些串差分 现在我们要求的就是公共子串且出现次数不少于$k$ ...

  8. BestCoder Round #89 B题---Fxx and game(单调队列)

    题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=5945     问题描述 输入描述 输出描述 输入样例 输出样例 题意:中文题,不再赘述: 思路:  B ...

  9. 单调队列 && 斜率优化dp 专题

    首先得讲一下单调队列,顾名思义,单调队列就是队列中的每个元素具有单调性,如果是单调递增队列,那么每个元素都是单调递增的,反正,亦然. 那么如何对单调队列进行操作呢? 是这样的:对于单调队列而言,队首和 ...

随机推荐

  1. Asp.NET MVC+WebAPI跨域调用

    使用jQuery调用WebApi有时会遇到跨域的问题,今天介绍一种可以简单解决跨域问题的方法. 当我们跨域请求WebAPI的时候会提示以下信息: XMLHttpRequest cannot load ...

  2. maven安装,使用说明,及maven Repository如何使用.

    maven的使用方法总结一下 1.首先去apache官网下载maven, http://maven.apache.org/download.cgi2.如果是windows系统,选择 apache-ma ...

  3. js 和C# ashx之间数组参数传递问题

    js在进行ajax提交时,如果提交的参数是数组,js无法直接进行提交,及时提交上去,解析也是比较麻烦 ajax在提交数组时,需要设置参数:  traditional: true,  //参数作为数组传 ...

  4. 使用Fsharp 探索 Dotnet 平台

    Fsharp的交互开发环境使得我们在了解DotNet平台时能够快速的获得需要的反馈. 反馈在任何技艺的磨练过程中必不可少,我认为也是最重要的环节之一.在“一万小时天才理论”中,著名的髓鞘质就是在快速有 ...

  5. centos yum 安装mysql5.7 以及 默认root密码查看

    1.  首先更新rpm 从MySQL Yum仓库下载最新的rpm文件:http://dev.mysql.com/downloads/repo/yum/ (需要Oracle帐号以及填写一些使用信息,才能 ...

  6. <Android 基础(一)> Service

    介绍 Service(服务)是一个没有用户界面的在后台运行执行耗时操作的应用组件.其他应用组件能够启动Service,并且当用户切换到另外的应用场景,Service将持续在后台运行.另外,一个组件能够 ...

  7. Openfire+spark在linux上搭建内部聊天系统

    一.    实验环境 Ubuntu server14.04 openfire:http://www.igniterealtime.org/downloads/index.jsp spark:http: ...

  8. xp_delete_files不起作用解决方法

    xp_delete_file用来删除数据库的备份文件和维护计划文本报告.示例: ,N'D:\Backup\Diff',N'bak',N'2019-05-29T10:03:41' 第一个参数表示文件类型 ...

  9. shell实现mysql数据库备份

    #!/bin/bash DB_USER="root" #数据库用户名 DB_PASS="12345678" #数据库密码 BACK_DIR="/bac ...

  10. Extjs4.1+desktop+SSH2 定义程序入口

    app.js定义程序入口: MainController.js: 加载控制器: 外部组件引用入口loader.js 时间组件 静态变量组件: 引入comm.js index.jsp 验证打印 comm ...