上一页 1 ··· 5 6 7 8 9 10 11 12 13 ··· 27 下一页
摘要: 并查集,不仅记fa,还记与fa的距离,还记根对应的尾节点 路径压缩的时候更新那个距离就行了 阅读全文
posted @ 2018-11-01 08:42 Ressed 阅读(203) 评论(0) 推荐(0) 编辑
摘要: 设f[i][j]是到第i位 已经匹配上了j位的状态数 然后通过枚举下一位放0~9,可以用kmp处理出一个转移的矩阵 然后就可以矩阵快速幂了 阅读全文
posted @ 2018-11-01 08:40 Ressed 阅读(159) 评论(0) 推荐(0) 编辑
摘要: 首先如果L=1,那就可以直接用一个优先队列来做 但它并不是1 所以要换个做法 假设我们已经知道第L的数是x,第R的数是y 那其实就只需要找到[x+1,y+1]这一段,然后再加上一定数量的x和y就是答案 于是可以枚举A[i],二分B[j]找到 然后考虑怎么找第L的数是多少 其实也是二分出一个数,然后比 阅读全文
posted @ 2018-10-29 21:22 Ressed 阅读(216) 评论(0) 推荐(0) 编辑
摘要: 对每趟车建一个虚点p,对于不停车的x,连边(x,p,1);对于停车的y,连边(p,y,0)有一条边(a,b,l)就是说b-a>=l由于题目保证一定能走,直接拓扑序dp算最大的就行了 阅读全文
posted @ 2018-10-29 21:09 Ressed 阅读(161) 评论(0) 推荐(0) 编辑
摘要: 设s[x][i]表示从根到x的异或和在第i位上的值(0/1),(a,b,i)表示a到b的异或和在第i位上的值那么就有(a,b,i)=(s[a][i]^s[b][i]^s[lca][i]^s[lca][i])=(s[a][i]^s[b][i])也就是说,能搞出来s[a][i]和s[b][i]的相同或不 阅读全文
posted @ 2018-10-29 21:08 Ressed 阅读(236) 评论(0) 推荐(0) 编辑
摘要: 注意到,所有的-1应该是一个不降的序列,否则不会更优那就先求出来不是-1的的逆序对个数,然后设f[i][j]表示第i个-1放成j的前i个-1带来的最小逆序对数量这个可以树状数组来求 阅读全文
posted @ 2018-10-29 21:07 Ressed 阅读(200) 评论(0) 推荐(0) 编辑
摘要: luogu1415 拆分数列的加强版 先考虑弱化版怎么做 设f[i]表示某一串数,最后一个数的右端点是i时,它的左端点的最大值(也就是说,这一串数的最后一个数尽量小) 那么有$f[j]=max\{i+1|num[i+1,j]>num[f[i],i]\}$ 这样推下去,f[N]就是最后一个数的最小值 阅读全文
posted @ 2018-10-29 10:22 Ressed 阅读(230) 评论(0) 推荐(0) 编辑
摘要: 用线段树记每个子树中包含的数,然后合并的时候算出来逆序对的数量(合并a,b时,就是size[ch[a][1]]*size[ch[b][0]]),来决定这个子树要不要翻转 阅读全文
posted @ 2018-10-28 21:15 Ressed 阅读(239) 评论(0) 推荐(0) 编辑
摘要: 反正先求一遍sa 然后这个问题可以稍微转化一下 默认比较A、B数组中元素的大小都是比较它们rank的大小,毕竟两个位置的LCP就是它们rank的rmq 然后每次只要求B[j]>=A[i]的LCP(B[j],A[i]),然后再求A[j]>B[i]的LCP(A[j],B[i])即可 这两个其实是差不多的 阅读全文
posted @ 2018-10-27 22:31 Ressed 阅读(408) 评论(0) 推荐(1) 编辑
摘要: 用一个树状数组维护前缀和,每次我二分地找一个位置,使得我能一路买过去 但这个买不了 那以后肯定也都买不了了,就把它改成0,再从头二分地找下一个位置,直到这一圈我可以跑下来 然后就看跑这一圈要花多少钱、能买多少糖,拿T除一除,减一减,再去跑下一圈 每个位置只会被删一次,所以复杂度是$O(nlog^2n 阅读全文
posted @ 2018-10-27 22:23 Ressed 阅读(235) 评论(0) 推荐(0) 编辑
上一页 1 ··· 5 6 7 8 9 10 11 12 13 ··· 27 下一页