昨晚回宿舍路上Rose_max肉老师做完了这道题问我怎么做,我这么辣鸡怎么可能会做嘛。。
然后我就说:二维线段树模版题(事实上我不会写二维线段树。。)
肉老师听完,淡淡的一笑:“太不优秀了。。”
然后我想啊想,也没有想到除了二维数据结构之外的方法。
然后肉老师又淡淡一笑:“二维ST表”
然后他转身而去,留下一个背影,我在风中惘然。
对啊,二维st表。
哈哈事实上为什么可以用二维st表呢,因为我们发现a,b<=1000并且并没有修改操作,然后他是一个RMQ问题。那么st表不就很优秀吗??不懂st表的同学,可以去看一下hanks_o的博客,二维st表的话就设f[i][j][k]为(i,j)向右向上2^k的正方形的最小最大值,然后更新即可,注意这题如果是长方形就不可做了,因为要开 N2log2N N 2 l o g 2 N 的空间也就是一个亿啊,会爆的。。
一开始RE了,不知道为什么,后来找hanks_o欧老师来帮我看代码,他把
for(int k=1;(1<<k)<=min(A,B);k++)
改成