博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj2019
阅读量:6614 次
发布时间:2019-06-24

本文共 2294 字,大约阅读时间需要 7 分钟。

dp

利用单调双向队列。类似sliding windows。

ContractedBlock.gif
ExpandedBlockStart.gif
View Code
#include 
#include
#include
#include
using namespace std; #define maxn 260 struct Node {
int pos, a; Node() {
} Node(int pp, int aa) : pos(pp), a(aa) {
} } q[maxn]; int n, sub, m; int f[maxn][maxn], fmax[maxn][maxn], fmin[maxn][maxn]; int lmax[maxn][maxn], lmin[maxn][maxn]; int front, rear; int ins1(Node x) {
while (front < rear && x.pos - q[front].pos >= sub) front++; while (front < rear && x.a > q[rear - 1].a) rear--; q[rear++] = x; return q[front].a; } int ins2(Node x) {
while (front < rear && x.pos - q[front].pos >= sub) front++; while (front < rear && x.a < q[rear - 1].a) rear--; q[rear++] = x; return q[front].a; } void input() {
scanf("%d%d%d", &n, &sub, &m); for (int i = 0; i < n; i++) for (int j = 0; j < n; j++) scanf("%d", &f[i][j]); } void work() {
for (int i = 0; i < n; i++) {
front = rear = 0; for (int j = 0; j < sub - 1; j++) ins1(Node(j, f[i][j])); for (int j = sub - 1; j < n; j++) lmax[i][j] = ins1(Node(j, f[i][j])); } for (int i = sub - 1; i < n; i++) {
front = rear = 0; for (int j = 0; j < sub - 1; j++) ins1(Node(j, lmax[j][i])); for (int j = sub - 1; j < n; j++) fmax[j][i] = ins1(Node(j, lmax[j][i])); } for (int i = 0; i < n; i++) {
front = rear = 0; for (int j = 0; j < sub - 1; j++) ins2(Node(j, f[i][j])); for (int j = sub - 1; j < n; j++) lmin[i][j] = ins2(Node(j, f[i][j])); } for (int i = sub - 1; i < n; i++) {
front = rear = 0; for (int j = 0; j < sub - 1; j++) ins2(Node(j, lmin[j][i])); for (int j = sub - 1; j < n; j++) fmin[j][i] = ins2(Node(j, lmin[j][i])); } } int main() {
//freopen("t.txt", "r", stdin); input(); work(); for (int i = 0; i < m; i++) {
int a, b; scanf("%d %d", &a, &b); a = a + sub - 2; b = b + sub - 2; printf("%d\n", fmax[a][b] - fmin[a][b]); } return 0; }

转载于:https://www.cnblogs.com/rainydays/archive/2011/07/23/2114970.html

你可能感兴趣的文章
解决eclipse中无法删除Tomcat服务器中的项目,报maven is required and cannot be removed from the server错误情况...
查看>>
修改页面JS 360浏览器
查看>>
尚学linux课程---3、linux网络说明
查看>>
Git 跟 GitHub 是什么关系?
查看>>
String.split()方法
查看>>
IE6下jQuery选中select的BUG
查看>>
Tensorflow在win10下的安装(CPU版本)
查看>>
嵌入式平台做深度学习算法,不可不重视的4件事
查看>>
一次优化记录
查看>>
如何调用一个数据完整的firefox浏览器
查看>>
cgroup代码浅析(2)
查看>>
会计的思考(42):会计如何转变为公司的内部财务顾问
查看>>
利用钥匙串,在应用里保存用户密码的方法
查看>>
final,finally和finalize之间的区别
查看>>
python 装饰器
查看>>
[辟谣]下蹲猛起来眼前发黑是心脏衰竭的表现?别扯了!
查看>>
paper 96:计算机视觉-机器学习近年部分综述
查看>>
vuex状态管理详细使用方法
查看>>
不要等有了足够的钱才选择去创业!!!
查看>>
手把手教你画嘴巴,以后再也不怕画嘴巴了
查看>>