考试总结 模拟99

考试过程

最后一场两位数的考试,死的很惨

开题后T1看了一眼,第一眼觉得是最长上升子序列,线性dp的那种

然后就去刚O(n)的算法,不久就听到大多数人敲键盘的声音,比较着急,

尤其是旁边人自信满满的动作。。。。然后就通过写暴力稳定心态。写完之后没试样例就继续想

思考效率指数级降低。。。想要对旁边人予以“反击”,可还是没有思路

1h多后有看题发现样例过不了,虽然之前先看了一眼样例但是并不能把握每一个细节

 又读了半天题最终在打算弃掉T1前读懂了。。。

浪费了1h30min??顿时一股来自西西伯利亚的寒流涌入心田。。。。。

充满着绝望的眼神又看了一边,发现理解对题意之后就比较好想了,

自认为当时比较清晰的大脑去思考了一个模糊的二分

边打边想实现所以写得很慢写完一边过了样例以为稳了,在还剩1h的时候激动得写完对拍,然后看着AC100,200...

WA了??!!我kuku,“一定是数组开小了”我安慰自己,发现并不是,就拍了好久的小点,终于发现自己二分的思路就不对

啊。。。人生啊。。。我这一场干了点什么啊。。

未避免20+0+0的尴尬,于是写了个T3暴力(还没开ll),T2读完题就写了个puts("-1").....

T1最后想出来了一个权值线段树的思路已经没时间了,就望向窗外的凉凉月色........

越到AFO,废话越多了。

 

题解

T1「二分」「单调栈」

首先可以想到每次修改的pos之前的计算ans的过程不变

那么数组存一下,然后我们只需要看当前改变后的高度h与前面的maxh的关系

if h>maxh 那么这个点就是下一个要到的点了,然后就需要找到后面的第一个大于h的位置,与len

else 直接去找第一个>maxh的位置

我们可以倒着去搞出来:从某一位置开始往后的最长贡献

那就只剩找后面第一个大于h的位置了

我考场上的思路是权值线段树每次区间赋值,单点查询

但是单调栈上二分的打法代码比较短,也就是维护一个从后往前的单调栈去二分出所求位置

T2「贪心」

实现过程:首先我们把原料给新建一个仓库,模拟到没一

猜你喜欢

转载自www.cnblogs.com/casun547/p/11791406.html