神奇的二分答案题
根据题目奇奇怪怪的限制,不难发现选择的行和列要连续
为了方便计算,将矩阵转置四次,每次只需考虑行要连续
二分一下ans 进行检验
对于矩阵中的mins 和maxs ,显然二者不能分在一起
根据mins ,maxs 和二分出来的ans ,贪心地确定每个值所在的分组,若不连续则不合法
神奇的二分答案题
根据题目奇奇怪怪的限制,不难发现选择的行和列要连续
为了方便计算,将矩阵转置四次,每次只需考虑行要连续
二分一下ans 进行检验
对于矩阵中的mins 和maxs ,显然二者不能分在一起
根据mins ,maxs 和二分出来的ans ,贪心地确定每个值所在的分组,若不连续则不合法
感觉是至今为止做到的最难的数据结构题
什么分块,嵌套,可持久化都没有这题给人的第一感觉难
这题每个数据开一个点都开不下。
考场上见到这题基本上一脸懵逼,想了很久写了个但是不能优化的算法,结果没开LL只有30分
用线段树维护每一行和最后一列,支持单点rank 和insert 两种操作
最大长度为
动态开点减少内存,空间复杂度
用并查集维护
在代表元素中保存当前段的颜色(),和左右端点()
再用一个桶维护每种颜色的所有段
当且仅当要合并两段颜色相同时进行合并,并更新左右端点
对于每个桶用list 维护,再进行启发式合并,这里偷懒直接用了vector
对于每个节点分别求左-右,右-左的逆序对,将较小的加入答案
原来思路:枚举个数较少的节点的每个数,二分求答案
看完题解发现可以用线段树合并。新技能get