[luoguP2216] [HAOI2007]理想的正方形(二维单调队列)


传送门

1.先弄个单调队列求出每一行的区间为n的最大值最小值。

2.然后再搞个单调队列求1所求出的结果的区间为n的最大值最小值

3.最后扫一遍就行

懒得画图,自己体会吧。

——代码

1 #include <cstdio> 2 #include <iostream> 3 4 using namespace std; 5 6 const int MAXN = 1001; 7 int a, b, n, h, t; 8 long long c[MAXN][MAXN], q[MAXN], max1[MAXN][MAXN], min1[MAXN][MAXN], max2[MAXN][MAXN], min2[MAXN][MAXN], ans = 1000000001; 9 10 inline void work1(int k) 11 21 h = 1; t = 0; 22 for(i = 1; i <= b; i++) 23 29 } 30 31 inline void work2(int k) 32 42 h = 1; t = 0; 43 for(i = 1; i <= a; i++) 44 50 } 51 52 int main() 53
View Code



上一篇:基本数论算法

下一篇:[luoguP1027] Car的旅行路线(Floyd)


单调队列
Copyright © 2002-2019 k262电脑网 www.k262.cn 皖ICP备2020016292号
温馨提示:部分文章图片数据来源与网络,仅供参考!版权归原作者所有,如有侵权请联系删除!QQ:251442993 热门搜索 网站地图