摘要: 反正先求一遍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) 编辑
摘要: 他都告诉你能拆了 那就拆呗。把每个重量拆成$a*2^b$的形式 然后对于每个不同的b,先分开做30个背包 再设f[i][j]表示b<=i的物品中 容量为$ j*2^i+W\&((1<<(i-1))-1) $(就是这一位是j+W的前i-1位)的最大权值(这个容量没必要填满) 然后f[i][j]就可以从 阅读全文
posted @ 2018-10-27 22:14 Ressed 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 给每一个联通块黑白染色(一条边两端点不同色),看是否能染 然后选那个出现次数比较少的颜色 阅读全文
posted @ 2018-10-27 21:55 Ressed 阅读(137) 评论(0) 推荐(0) 编辑
摘要: 少女填坑中... 欧拉路径/欧拉回路 欧拉路径是一条经过图中所有边且只经过一次的路径(类似于一笔画问题);欧拉回路的话就是起点和终点相同的欧拉路径 存在条件 考虑有向图时欧拉回路存在的条件:由于每条边都要经过,所以每个点的入度和出度都要相等 然后再考虑欧拉路径:可以假装有一条从终点到起点的边,加上这 阅读全文
posted @ 2018-10-27 21:52 Ressed 阅读(496) 评论(0) 推荐(1) 编辑
摘要: 这题我是离线做的 设i位置的数上次出现的位置是pre[i](如果第一次出现那就是0) 可以想到,用线段树维护一个区间的pre的最小值,如果它小于区间左端点,那这个数就是一个合法的答案 但直接这样做是错的 考虑1,2,3,4,[1,1],5,虽然前一个1的pre在区间外面,但他后面还有一个1啊 所以可 阅读全文
posted @ 2018-10-27 21:19 Ressed 阅读(377) 评论(0) 推荐(0) 编辑
摘要: 题意:无向联通图,求一条最长的路径,路径长度定义为u到v必须经过的边的个数 如果把强联通分量都缩成一个点以后,每个点内部的边都是可替代的;而又因为这是个无向图,缩完点以后就是棵树,跑两遍dfs求直径即可 阅读全文
posted @ 2018-10-27 21:09 Ressed 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 设f[i]是以i为开头的好子序列的个数 那么有$f[i]=\sum\limits_{j=i+a[i]+1}^{N+1}{f[j]*C_{j-i-1}^{a[i]}}$(设f[N+1]=1)就是以i为开头选出一个好子数组的每种情况*再把它拼到后面的一个好子序列的数量 随便用什么方法预处理一下组合数就行 阅读全文
posted @ 2018-10-27 21:05 Ressed 阅读(243) 评论(0) 推荐(0) 编辑
摘要: 考虑如果数字范围没有这么大的话,直接做一个差分数组就可以了 但现在变大了 所以要用一个map来维护 阅读全文
posted @ 2018-10-27 20:58 Ressed 阅读(270) 评论(0) 推荐(0) 编辑