随笔分类 - 题解
摘要:其实可以二分矩阵边长但是我太懒了$qwq$。 把每个子矩阵扔到$map$里,然后就没了 2019.07.11
阅读全文
摘要:首先$LIS$显然:$f[i][j]=max(f[i][j-1],f[i-1][j],(a[i]==b[j])*f[i-1][j-1])$ 考虑如何转移数量: 首先,不管$a[i]$是否等于$b[j]$, 都有$h[i][j]+=h[i-1][j]*(f[i][j]==f[i-1][j])+h[i]
阅读全文
摘要:我的天。。普及组这么$hard$。。。 然后好像没有人用我的垃圾做法,,,好像是$O(n)$,但十分的慢,并且极其暴力$qwq$ 具体来说,就是直接$dfs$求出树高,然后想像出把原来的树补成满二叉树的形态 $like\space this:$ 震不震惊$qwq$ 然后对子树哈希,同时保存正向的哈希
阅读全文
摘要:刚开始写了个没迭代的。。。结果过了$qwq$ 然后迭个代。。更快了。。 2019.07.03
阅读全文
摘要:开一个单调队列,下标递增,值递减。 然后在上面二分最大数。 如果加上并查集可以做到接近线性。 还有一种是插入一个数然后,从后向前更新ST表。 ST表: 2019.07.03
阅读全文
摘要:卸载:把子树清空; 安装:把自己到$1$的链改为$1$ 2019.07.03
阅读全文
摘要:RT. 2019.07.03
阅读全文
摘要:只会两个$log$的$qwq$ 我们二分答案:设答案为$ans$,则我们把$a[i]<=ans$全部设成$0$,把$a[i]>ans$全部设成$1$,扔到线段树里,这样区间排序(升序)就是求出$[l,r]$中$0$(或$1$)的个数$cnt$,然后对区间$[l,l+cnt-1]$赋值为$0$,对$[
阅读全文
摘要:标准的带修莫队。。。咕到了现在$qwq$ 莫队是对询问排序来优化复杂度的(不带修就是对询问区间$[l,r]$排序)。。 那么现在带修了,我们再可以维护一个时间维度$tm$:对于每个询问,每次回答前先检查时间指针是否与询问的时间对应,不对应则按操作时间修改。 2019.07.03
阅读全文
摘要:这才是真正的$N\sqrt{N}$吧$qwq$ 记录每个数$vl$出现的位置$s[vl]$,和每个数$a[i]=vl$是第几个$vl$,记为$P[i]$,然后预处理出块$[i,j]$区间的答案$f[i][j]$; 对于$[l,r]$,现将$ans$设为$[l,r]$中整块的答案;对于散块,将散块中的
阅读全文
摘要:这道题算是好好写了。写了三种方法。 有一个好像是$qwq$$N\sqrt(N)$的方法,,但是恳请大佬们帮我看看为什么这么慢$qwq$(后面的第三种) 注:$pos[i]$表示$i$属于第$pos[i]$块。 第一种是统计所有可能的块组成的区间中(第i块到第j块),每个数出现的次数,记做$f[i][
阅读全文
摘要:题意:有编号1~n乱序排列的奶牛,给出了每一个奶牛前小于自己编号的奶牛数目 维护一个树状数组,下标是编号,值为$0/1$标识是否存在,很显然最后一个牛的编号是知道的,我们在树状数组上二分出前缀和为小于这个牛编号的奶牛数目的位置,这个位置代表的编号就是这头奶牛的编号。 2019.06.27
阅读全文
摘要:两道题都是求循环节的。。。但是一道是学哈希时做的,另一道是学$KMP$时做的 POJ2604 用的哈希。。。枚举长度的因数作为循环节的长度,然后暴力算出所有循环节位置的哈希值,看看是否相等。 POJ1961 用的$kmp$详解 2019.06.27
阅读全文
摘要:当初竟然看成子串了$qwq$,不过老师的$ppt$也错了$qwq$ 由于子序列一定是的排列,所以考虑插入$1$到$m$到$n-m+1$到$n$; 如何判断呢?可以用哈希$qwq$; 我们用线段树维护哈希值,合并时用就把左子树的哈希值$x[ls]$在$B$进制下左移$sum[rs]$位,即$x[tr]
阅读全文
摘要:好,暴力能拿$50pts\space qwq$ 暴力的思路就是一直跳$nxt[j]$,直到它的长度小于串的一半,然后开始计数,当然要接着跳$nxt[j]$ 正解:考虑没有长度要求的(不要求不重合)公共前后缀的数目,显然$ans[i]=ans[j]+1$相当于$i$比$j$是多了$i$它本身。 所以求
阅读全文
摘要:扫描线终于看懂了。。。咕咕了快三个月$qwq$ 对于所有的横线按纵坐标排序,矩阵靠下的线权值设为$1$,靠上的线权值设为$-1$,然后执行线段树区间加减,每次的贡献就是有效宽度乘上两次计算时的纵坐标之差。 $cnt$数组记录每个位置被覆盖的次数,$sum$数组用来记区间总长度(即有效宽度),所以每一
阅读全文
摘要:先把每个长为$mina$,宽为$minb$的矩阵扔到堆里,然后由于矩阵中的数都是正的,所以我们每取出来一个矩形,,就把他向四个方向扩张一行,再把这新的且更大的四个矩形扔到堆里。注意判重,于是我比较懒用的$map$ $qwq$ 2019.06.13
阅读全文
摘要:用大根堆和小根堆分别存放前$i-1$大的元素前$k-i$小的元素。 将当前序列的元素压入最小堆,如果最小堆的最小数大于最大堆的最大数则进行交换,保证最大堆中的所有数小于最小堆。 因为$i$值每进行一次自增$1$,所以每次$get$操作后将小根堆顶弹出存入大根堆。 2019.06.13
阅读全文
摘要:设$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
阅读全文
摘要:做一个树上前缀异或和,然后把前缀和插到$01trie$里,然后再对每一个前缀异或和整个查一遍,在树上从高位向低位贪心,按位优先选择不同的,就能贪出最大的答案。 2019.06.13
阅读全文

浙公网安备 33010602011771号