博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[HAOI2017]理想的正方形codevs1715
阅读量:6322 次
发布时间:2019-06-22

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

二维RMQ,算是暴力做法,洛谷 codevs可以A掉90%,bzoj居然全A 玄学,剩下一个TLE的点需要单调队列+滑动窗口

#include
#include
#include
#include
#define N 1501using namespace std;int a,b,n;int minn[N][N][13],maxx[N][N][13];int main(){// memset(maxx,127,sizeof(maxx));// memset(minn,-127,sizeof(minn)); scanf("%d %d %d",&a,&b,&n); for(int i=1;i<=a;i++) for(int j=1;j<=b;j++) { scanf("%d",&maxx[i][j][0]); minn[i][j][0]=maxx[i][j][0]; } int k=log2(max(a,b)); for(int pow=1;pow<=k;pow++) { int len=1<<(pow-1); for(int i=1;i;i++) { if(i+len>a) break; for(int j=1;j;j++) { if(j+len>b) break; maxx[i][j][pow]=max(max(maxx[i][j][pow-1],maxx[i+len][j][pow-1]),max(maxx[i+len][j+len][pow-1],maxx[i][j+len][pow-1])); minn[i][j][pow]=min(min(minn[i][j][pow-1],minn[i+len][j][pow-1]),min(minn[i+len][j+len][pow-1],minn[i][j+len][pow-1])); } } } k=log2(n); int len=1<
a)break; for(int j=1;j;j++) { if(j+n-1>b) break; int ma,mi; ma=max(max(maxx[i][j][k],maxx[i+n-len][j][k]),max(maxx[i][j+n-len][k],maxx[i+n-len][j+n-len][k])); mi=min(min(minn[i][j][k],minn[i+n-len][j][k]),min(minn[i][j+n-len][k],minn[i+n-len][j+n-len][k])); if(ans>ma-mi) ans=ma-mi; } } printf("%d",ans); return 0;}

 

  

转载于:https://www.cnblogs.com/Yeaaa/p/6733237.html

你可能感兴趣的文章
【linux】保存屏幕日志log
查看>>
记一道经典前端题
查看>>
iOS走近商城APP(二 购物车常用控件)
查看>>
使用 Kafka 和 MongoDB 进行 Go 异步处理
查看>>
禁止自动横屏下的视频播放强制旋转
查看>>
Docker 入门操作
查看>>
直播的一些技术点
查看>>
JavaScript实现链表
查看>>
103. Binary Tree Zigzag Level Order Traversal
查看>>
JavaScript函数式编程,真香之组合(一)
查看>>
使用Envoy 作Sidecar Proxy的微服务模式-3.分布式追踪
查看>>
深入了解以太坊
查看>>
SpringBoot 实战 (二) | 第一个 SpringBoot 工程详解
查看>>
Go goroutine理解
查看>>
IDE 插件新版本发布,开发效率 “biu” 起来了
查看>>
如何让被遮挡层可以进行事件点击?(纯CSS方法)
查看>>
理解环境变量 JAVA_TOOL_OPTIONS
查看>>
Java Bridge Pattern(桥接模式)
查看>>
看大牛是如何使用和理解线程池
查看>>
sql server 索引阐述系列八 统计信息
查看>>