摘要:
扫描线终于看懂了。。。咕咕了快三个月$qwq$ 对于所有的横线按纵坐标排序,矩阵靠下的线权值设为$1$,靠上的线权值设为$-1$,然后执行线段树区间加减,每次的贡献就是有效宽度乘上两次计算时的纵坐标之差。 $cnt$数组记录每个位置被覆盖的次数,$sum$数组用来记区间总长度(即有效宽度),所以每一 阅读全文
posted @ 2019-06-13 23:47
LuitaryiJack
阅读(223)
评论(0)
推荐(1)
摘要:
先把每个长为$mina$,宽为$minb$的矩阵扔到堆里,然后由于矩阵中的数都是正的,所以我们每取出来一个矩形,,就把他向四个方向扩张一行,再把这新的且更大的四个矩形扔到堆里。注意判重,于是我比较懒用的$map$ $qwq$ 2019.06.13 阅读全文
posted @ 2019-06-13 23:32
LuitaryiJack
阅读(177)
评论(0)
推荐(1)
摘要:
用大根堆和小根堆分别存放前$i-1$大的元素前$k-i$小的元素。 将当前序列的元素压入最小堆,如果最小堆的最小数大于最大堆的最大数则进行交换,保证最大堆中的所有数小于最小堆。 因为$i$值每进行一次自增$1$,所以每次$get$操作后将小根堆顶弹出存入大根堆。 2019.06.13 阅读全文
posted @ 2019-06-13 00:29
LuitaryiJack
阅读(150)
评论(0)
推荐(1)
摘要:
设$f[i]$表示切掉前$i$位和后$i$位后,即剩下$s[i+1]到s[n-i]$,的公共前后缀长度。此时我们发现,$f[i-1]$相对于$f[i]$少切了两个$char$,所以有$f[i-1]\leq f[i]+2$,所以我们可以有上界地递推了。 当然最终答案是$max(f[i]+i),且1-s 阅读全文
posted @ 2019-06-13 00:25
LuitaryiJack
阅读(308)
评论(0)
推荐(1)
摘要:
做一个树上前缀异或和,然后把前缀和插到$01trie$里,然后再对每一个前缀异或和整个查一遍,在树上从高位向低位贪心,按位优先选择不同的,就能贪出最大的答案。 2019.06.13 阅读全文
posted @ 2019-06-13 00:18
LuitaryiJack
阅读(175)
评论(0)
推荐(1)
摘要:
好题。。。开阔思路 把每个前缀异或和依次插入$01trie$,插之前找一个最优的(就是从高位向低位贪心,尽量走相反方向)看看能不能更新答案,此时相当于找到了区间右端点不超过某个点$r$的最大或和$f[r]$。对于后缀也同理来一波上面的操作,然后就找到了区间左端点端点不少于某个点$l$的最大异或和。所 阅读全文
posted @ 2019-06-13 00:11
LuitaryiJack
阅读(192)
评论(0)
推荐(0)
摘要:
建一颗$trie$树(当然你哈希也资瓷),边插边更新,看看搜到最底时有多少个字符串,然后更新。 2019.06.13 阅读全文
posted @ 2019-06-13 00:04
LuitaryiJack
阅读(149)
评论(0)
推荐(1)

浙公网安备 33010602011771号