今天太热了,热到不想动,感觉书也没看进去多少,上午补了几道题,下午看明白了单调栈和单调队列。
1.单调栈:
题目:给定n个不同高度的矩形,求最大的联通的矩形的面积。
单调栈的做法就是:
从头开始将矩形入栈,遇到比栈顶矩形高的就入栈,同时计算不同面积的情况取最大值;遇到比栈顶矩形矮的就把栈内元素全部出栈;然后重复这个操作,就可以找到最大值。
2.单调队列:
题目:给定一行数,要在里面找一个子串,求使子串和最大且长度不大于m的子串。
做法,将数放在队列里,从枚举第一个开始取的满足条件的最大子串。然后取最值。
今晚上做题简直了,太难了,第一题我又读错了题,开始以为是正常的斐波那契数列的规则,然后就WA。做完A都过去一个多小时了。我把所有的题都读了一遍,能读懂题,BC能看出来该用什么做,就是写不出来。D题应该是个规律题,也不会推,后来看了题解才知道,但是感觉规律并不好推,也不好想,太难了,我还是太菜,DP,搜索都不会。。。还是要多做几道题,熟悉熟悉。