Contest2162 - 2019-3-28 高一noip基础知识点 测试5 题解版

传送门

T1

单调栈

按照b排序

在家每一个物品时,判断一下a和b的关系

如果s[sta[top]].a>=s[i].b,就弹栈

记录所有时候的height,并取最大值


T2

单调栈裸题

单调栈是干什么的??

单调栈是记录一个数的一侧的第一个比他大或比他小的数

记录方法:若a将b弹出,则mark[b]=a;


T3

搜索+剪枝

剪枝1:若总长度%要拼成的长度!=0,就不用再搜了一定不合法

剪枝2:从大到小搜

剪枝3:若搜到第一个时,就直接用当前的最大值做为第一个


T4

emm……单调栈

从前扫一遍,从后扫一遍

在弹出时做异或的操作

时间复杂度:O(n)


T5

单调栈

话说这一次考了4道单调栈

和最大长方形的思路很像

求以a[i]为最小值的区段的左界le右界ri

然后更新答案num[ri-le(+1)(-1)]//自己看记录的ri和le是如何记录的

num[i]=max(num[i],num[i+1])

记住要从后向前取max


上一篇:SharePoint 2013 APP 开发示例 (三)使用远程的web资源


下一篇:js中属性类型:数据属性与访问器属性