【暑假集训模拟DAY3】数据结构

前言

数据结构...原本以为都是树状数组线段树,单调队列,并查集(其实也有)往上堆,但是看题居然没感觉和数据结构有太大关系

原本预计T1”秒切”,然而经过长达3h的思考后后面写了三个暴力(还因为常数大和 lj评测机挂了15pts)

总分:70pts(直接垫底)

题解

T1forward

链表写挂的只有我一个。说实话一开始还有点沾沾自喜,但是确实很久不写链表,到底挂了,主要是因为 lst 数组更新的时候忘记更新 lst[nxt[x]]=lst[x],lst[fir]=x这样的操作

实际发现根本不用这么复杂,什么双端队列,什么反着输入操作,乱搞都能过

这题挂了属实亏

T2basket

自古T2难度大

想了很长时间各种的贪心,优先队列等等,最终打了爆搜

正解的枚举有点神仙,而且最后的30分才需要线段树维护等等...

T3manage

想了很久并查集,建图的操作,但是始终思路跳不出去

根本没想到正解:按照时间建边,倍增维护路径最大值,把询问离线处理

这道题告诉我,在树上的倍增基本是dfs的时候处理一遍,不会有边加边边处理或者修改的情况

我觉得不简单。。。

不过这道题告诉我:离线处理询问有很大的好处!(而且要注意数组大小和下标不要越界...)

 T4square

暴力显然很好想:枚举每个点二分,维护二维前缀和写二分的check函数

正解:时间逆流操作,把放障碍物的操作变成把障碍物拿走的操作,如果有更大的矩阵那么一定经过改变的点,对于一行,枚举右端点 r ,用单调队列分别维护该行向上,向下的高度最小值,可以确定出左端点

 

posted @ 2021-08-11 23:47  conprour  阅读(31)  评论(0编辑  收藏  举报