上一页 1 ··· 102 103 104 105 106 107 108 109 110 ··· 130 下一页
摘要: 再拓展一下LCS的滚动数组 阅读全文
posted @ 2024-01-17 22:36 最爱丁珰 阅读(9) 评论(0) 推荐(0)
摘要: 第一问不说了,主要是第二问 第二问考虑贪心,利用数学归纳法证明 这里还有一种贪心策略,就是从右边往左边考虑,但这样好像证不出来 因为这是NOIP的题嘛,没有那么难,看到序列最优化的问题往贪心或者DP上面想喽 当然介绍一个定理 阅读全文
posted @ 2024-01-17 22:07 最爱丁珰 阅读(7) 评论(0) 推荐(0)
摘要: 普通的LIS问题的时间复杂度是\(O(n^2)\),瓶颈主要是在方程\(f[i]=1+max(f[j])\),其中\(1≤j<i\)且\(a[j]<a[i]\)中寻找\(j\)上 我们尝试用贪心优化,这里的\(j\)就是小于\(i\)的比\(a[i]\)小的且\(f[j]\)最大的\(j\) 根据贪 阅读全文
posted @ 2024-01-17 21:34 最爱丁珰 阅读(26) 评论(0) 推荐(0)
摘要: 这个是对\(f[i]\)数组的扩展,\(f[i]\)求的是\(A\)的后缀与\(B\)的前缀匹配的最大长度,而这道题目是求\(A\)的前缀与\(B\)的前缀匹配的最大长度 注意不能简单地将\(A\)翻转然后跑KMP,因为\(A\)翻转了匹配的方向不会翻转。比如说\(ABC\)与\(AB\)匹配长度为 阅读全文
posted @ 2024-01-17 20:15 最爱丁珰 阅读(11) 评论(0) 推荐(0)
摘要: 我们先证明这个子矩阵一定可以放在左上角 假设我们在原矩阵中随便取一个矩阵(这个矩阵不与四条邻边挨着),然后让这个矩阵无限的复制延伸可以覆盖原来的矩阵,那么重新选取一个矩阵,这个矩阵是我们最开始选取的矩阵的每一列往左边走一位而行不变的矩阵,比如下面 其中黑色矩阵是我们最开始选取的矩阵,橙色矩阵是我们现 阅读全文
posted @ 2024-01-16 23:54 最爱丁珰 阅读(33) 评论(0) 推荐(0)
摘要: 这道题目就是一个二维hash模板 讲一下二维哈希 二维的数据结构一般都是先对一个既定的行做列(一维)上的操作,然后再把若干列当成一维处理行(数组指针指向一个二维数组就可以这么理解) 设\(hash[i][j]\)表示前\(i\)行前\(j\)列的矩阵的hash值 我们先对列做hash(设进制数为\( 阅读全文
posted @ 2024-01-16 21:50 最爱丁珰 阅读(21) 评论(0) 推荐(0)
摘要: 蓝书上的hash函数一般都是在循环同构串的时候用,因为这个时候可以完美避免起点以及方向的问题 当然其实涉及了循环同构串了建议还是直接上最小表示法吧 阅读全文
posted @ 2024-01-16 20:28 最爱丁珰 阅读(15) 评论(0) 推荐(0)
摘要: 具体解法见LYD蓝书 这里主要讲一下为什么只用判断\(next[i]\),而不用继续判断\(next[next[i]]\)或者\(next[next[next[i]]]\)等等 主要是有以下几个结论: 如果\(s[1\)~\(i-next[i]]\)不能作为\(s[1\)~\(i]\)循环元,那么\ 阅读全文
posted @ 2024-01-16 19:48 最爱丁珰 阅读(13) 评论(0) 推荐(0)
摘要: 在扫描过程中一旦扫描到一个子串01数量相等了,这个时候肯定是已经递归回到根节点了,因为从根节点下去的一步操作给了一个0,而这个0一定要从这条边回到根节点才能产生一个1与其匹配(这个1不可能来自其他边的回溯,因为其他边的回溯的前提就是之前从这条边下去了,就会产生一个0,,这个0就要与这个边回溯产生的1 阅读全文
posted @ 2024-01-14 20:40 最爱丁珰 阅读(13) 评论(0) 推荐(0)
摘要: 洛谷的remotejudge好想崩了,代码交到cf上的 可以知道一次交换只会影响\([l,r]\)内的数,分块暴力统计 直接考虑\(l\)和\(r\)不在同一个块里面的情况 我们需要预处理出一个数组\(cnt[i][j]\),表示第\(i\)个块内比\(j\)小的数的个数,这里要用树状数组进行处理 阅读全文
posted @ 2024-01-13 22:22 最爱丁珰 阅读(14) 评论(0) 推荐(0)
上一页 1 ··· 102 103 104 105 106 107 108 109 110 ··· 130 下一页