上一页 1 ··· 3 4 5 6 7 8 9 10 11 12 下一页
摘要: 先考虑只有一维的情况,要求支持区间加和求区间 \(\gcd\),根据 \(\gcd\) 的性质,发现: \[ \gcd(a_1,a_2,a_3,\ldots a_n)=\gcd(a_i,a_2-a_1,a_3-a_2,\ldots a_n-a_{n-1}) \] 其中 \(a_i\) 为原序列 \( 阅读全文
posted @ 2020-07-10 10:55 lhm_liu 阅读(419) 评论(0) 推荐(0) 编辑
摘要: 通过建最小割树 \((Gomory-Hu\ Tree)\) 来快速求解无向图中两点间的最小割。 最小割树中的一条边的权值,为其两端点的最小割,那么任意两点之间的最小割即为路径上的最小值。 通过递归建树即可。 \(code:\) void build(int l,int r) { if(l==r) r 阅读全文
posted @ 2020-07-08 22:17 lhm_liu 阅读(217) 评论(0) 推荐(0) 编辑
摘要: 首先将操作倒序,把删边转化为加边。先考虑若边是无向边,条件为连通,要怎么处理。 可以用并查集来维护连通性,对每个连通块维护一颗权值线段树,连通块的合并用线段树合并来实现,线段树同时也支持了修改点权。 然后再考虑对于有向边和强连通分量要怎么做。无向边的作用是使两个连通块成为一个连通块,有向边的作用是使 阅读全文
posted @ 2020-07-07 22:32 lhm_liu 阅读(287) 评论(0) 推荐(0) 编辑
摘要: 先考虑对于一个序列,能使其可以删空的的修改次数。 首先可以发现,序列的排列顺序是没有影响的,所以可以将所有数放到桶里来处理。 尝试对一个没有经过修改的可以删空的序列来进行删数,一开始删去所有的$n$,然后序列长度变为$x_1$,删去所有的$x_1$,然后序列长度变为$x_2$,删去所有的$x_2$… 阅读全文
posted @ 2020-07-06 23:54 lhm_liu 阅读(274) 评论(0) 推荐(0) 编辑
摘要: 设$lenth_i$为$s$在$i$位置的前缀的后缀为$t$的一个子串的最长长度,即为从$i$位置开始往前和$t$的最长公共子串长度。其可以通过对$t$建后缀自动机,然后让$s$在自动机上匹配来求出。 求出$lenth_i$后,对于区间$[l,r]$的一个询问,其答案即为: \[ \max_{i=l 阅读全文
posted @ 2020-06-28 20:16 lhm_liu 阅读(202) 评论(0) 推荐(0) 编辑
摘要: 根据题意,题目中所求的即为所有$n!$种完美匹配的各自的出现概率之和再乘上$2^n$的值。 发现$n$很小,考虑状压$DP$。设$f_{S,T}$为左部图匹配情况为$S$,右部图匹配情况为$T$的期望,可以得到转移为: \[ f_{S,T}=\sum_{x \subseteqq S \land y 阅读全文
posted @ 2020-06-26 23:06 lhm_liu 阅读(244) 评论(0) 推荐(1) 编辑
摘要: 因为有撤销操作,所以修改操作可能会只会存在一段时间,因此把时间看作一维,被修改的序列看作一维。 可以把操作都离线下来,对于每个修改操作,就是在二维平面上对一个矩形进行修改,询问操作,就是查询单点权值。 具体实现时,可以对所有询问操作查询的单点建$K-D\ Tree$,然后在$K-D\ Tree$上矩 阅读全文
posted @ 2020-06-15 15:49 lhm_liu 阅读(312) 评论(0) 推荐(0) 编辑
摘要: 考虑可以枚举字符串上的两个点,求出两个点所对应后缀的$LCP$和所对应前缀的$LCS$,两点之间的距离为$len$,则这两个点对答案的贡献为: \[ \frac{LCS+LCP+L-1}{L} \] 取最大值即为答案,可以通过下图来理解这个式子: 首先已经将字符串分为了若干个长度为$len$的块,箭 阅读全文
posted @ 2020-06-14 08:31 lhm_liu 阅读(263) 评论(0) 推荐(0) 编辑
摘要: 根据题意,发现题目中的图,其实就是一颗树或者是一颗基环树,每个节点上有一个点对$(x,y)$,每次询问为给定端点,找一条直线到端点间的所有点的距离之和最小。 设这条直线为$y=kx+b$,根据点到直线公式得,我们要求$\sum\limits_^n \frac{(kx_i-y_i+b)2}{k2+1} 阅读全文
posted @ 2020-06-11 18:07 lhm_liu 阅读(334) 评论(0) 推荐(0) 编辑
摘要: 不难想到可以$2^k$去枚举$k$条新边的选择方案,然后加入原图中的边来使图连通,用当前方案的收益去更新答案,但是这样复杂度过不去。 可以先把$k$条新边都连上,然后再加入边权从小到大排序过后的原图的边,直到图连通。后加入的原图的边在任何一个新边的选择方案都是要加入的,因为找这些边时是选了所有$k$ 阅读全文
posted @ 2020-06-08 11:01 lhm_liu 阅读(376) 评论(0) 推荐(0) 编辑
摘要: 可以用网络流解决这个题。 注意到$a_i \geqslant 2$,所以当相邻数字要和为质数时,这两个数要一个为奇数,一个为偶数。 所以就先将所有数按奇偶分为两列,其就构成了一个二分图,二分图中和为质数的两个数间连容量为$1$的边,表示只能匹配一次。 因为是圆桌,所以一个数要恰好匹配两个数,所以每个 阅读全文
posted @ 2020-06-08 10:21 lhm_liu 阅读(191) 评论(0) 推荐(0) 编辑
摘要: 可以先考虑没有障碍物的情况,设计状态$f_{i,j,k}$,表示到达坐标 $(x,y,z)$二进制下,$x$有$i$位,$y$有$j$位,$z$有$k$位的方案数。 得转移方程为: \[ f_{i,j,k}=\sum_{x=1}^i f_{i-x,j,k}\binom{i}{x}+\sum_{x=1 阅读全文
posted @ 2020-06-08 10:02 lhm_liu 阅读(251) 评论(0) 推荐(0) 编辑
摘要: 考虑生成一颗二叉树的过程,加入第一个节点方案数为$1$,加入第二个节点方案数为$2$,加入第三个节点方案数为$3$,发现生成一颗$n$个节点的二叉树的方案数为$n!$。 所以题目中所求即为点与点之间的距离之和,考虑每一条边的贡献,即$\sum\limits_esize_x \times size_y 阅读全文
posted @ 2020-06-03 13:30 lhm_liu 阅读(199) 评论(0) 推荐(0) 编辑
摘要: 对于一个固定的左端点,右端点向右移动时,其子串权值和不断增大,字典序降序排名不断减小,因此对于一个左端点,最多存在一个右端点使其满足条件。 所以可以枚举左端点,然后二分右端点的位置,权值和通过前缀和来查询,现在的问题就是如何快速查询一个子串的排名。 考虑用后缀数组来解决,对于一个子串$[l,r]$, 阅读全文
posted @ 2020-06-02 23:59 lhm_liu 阅读(270) 评论(0) 推荐(0) 编辑
摘要: 可以先去考虑没有$1 \times 1$的砖块的情况,对于最后一个位置只有两种情况,一个是竖着用一块砖铺设$2 \times 1$,另一个为横着用两块砖铺设$2 \times 2$。 设没有$1 \times 1$的砖块的情况铺$2 \times n$的路的方案数为$F_n$,根据上面的分析得$F_ 阅读全文
posted @ 2020-05-30 23:21 lhm_liu 阅读(213) 评论(0) 推荐(0) 编辑
摘要: 考虑用费用流解决本题。 每个哨站看作一个点,并将其拆为两个点,建图方式为: \(S \longrightarrow x_i\) 容量为$1$,费用为$0$ \(x_i \longrightarrow T\) 容量为$1$,费用为$w$ \(x_i \longrightarrow x^\prime_j 阅读全文
posted @ 2020-05-27 00:20 lhm_liu 阅读(190) 评论(0) 推荐(0) 编辑
摘要: 可以分别枚举两人正面朝上的次数来统计答案,所求即为: \[ \large\sum_{i=0}^{a}\sum_{j=0}^{b} \binom{a}{i} \binom{b}{j} [i>j] \] 将 \(i\) 替换为 \(i+j\) 来保证 \(i>j\): \[ \large\sum_{i= 阅读全文
posted @ 2020-05-22 23:24 lhm_liu 阅读(367) 评论(0) 推荐(0) 编辑
摘要: 考虑用分块解决这个题,一次交换对当前逆序对个数的影响是,加上两倍的在区间$[l+1,r 1]$中比$a_r$小的元素个数,减去两倍的在区间$[l+1,r 1]$中比$a_l$小的元素个数,再根据$a_l$和$a_r$的大小关系决定这两个位置对答案的影响。 可以用$vector$来维护每个块内元素有序 阅读全文
posted @ 2020-05-14 00:25 lhm_liu 阅读(234) 评论(0) 推荐(0) 编辑
摘要: 题意可以转化为是否能找一条从$u$到$v$的路径,经过的边的$a$和$b$的最大值恰好都是询问所给定的值。 若只有$a$的限制,可以将询问离线,对边和询问都从小到大排序,然后双指针维护当前合法的边,用并查集维护连通块的最值和连通性。 现在有$a$和$b$的限制,考虑对边分块,先对所有边按$a$从小到 阅读全文
posted @ 2020-05-13 00:06 lhm_liu 阅读(438) 评论(0) 推荐(0) 编辑
摘要: 考虑若只有查询操作,那么就可以构造$Kruskal$重构树,然后在线询问了,也可以更简单的把询问离线,把询问和边都按权值从大到小排序,然后双指针依次加入对于当前询问合法的边,用并查集维护每个点的答案即可。 现在加上修改操作,考虑可以对所有操作分块,对块内所有询问操作排序,和之前的离线做法一样,用双指 阅读全文
posted @ 2020-05-12 17:02 lhm_liu 阅读(328) 评论(0) 推荐(0) 编辑
摘要: 先考虑狼形,其只能走编号小于$R$的点。若将每条边赋边权为其两端点编号的较大值,然后按最小生成树的顺序构建$Kruskal$重构树。 那么从原图的一个点$x$在树上倍增,到达满足要求且深度最浅的节点,该节点子树内所有原图中的点,狼形从$x$都能到达。 同样的,人形构建重构树就是边权为两端点编号的较小 阅读全文
posted @ 2020-05-10 19:04 lhm_liu 阅读(317) 评论(0) 推荐(0) 编辑
摘要: 用$Kruskal$构建生成树的顺序来构建$Kruskal$重构树 两个连通块合并时,新建一个节点,点权为联通这两个连通块边的边权,新节点向两个连通块的根连边,新节点为合并后的连通块的根 得到的树为有$n$个叶子节点的二叉树,其满足堆的性质 求一个点$x$在只经过边权不大于$v$的边所能到达的点。边 阅读全文
posted @ 2020-05-08 00:30 lhm_liu 阅读(186) 评论(0) 推荐(0) 编辑
摘要: 考虑原序列中的每一个值作为构成最终答案的那个次大值,那么其所在的合法区间最大时,其对答案的贡献最大。 一个值作为最大值时有两个合法的最大区间,一个是左边第二个比其大的位置和右边第一个比其大的位置构成的区间,另一个是左边第一个比其大的位置和右边第二个比其大的位置构成的区间,这两个区间都是开区间。确定区 阅读全文
posted @ 2020-05-02 18:55 lhm_liu 阅读(194) 评论(0) 推荐(0) 编辑
摘要: 首先考虑可以用二分答案来解决询问,可以二分一个长度$len$,若在区间$[x-len,x+len]$内包含了所有$k$种的商店,那么这个$len$就是合法的,可以通过二分来求其最小值。 对每个商店的存在时间转化为在$a$时刻出现,在$b+1$时刻消失,然后和询问一起离线按时间排序,就可以解决时间这一 阅读全文
posted @ 2020-05-01 00:17 lhm_liu 阅读(184) 评论(0) 推荐(0) 编辑
摘要: 读完题后不难看出本题是个网络流模型,源点流出的总流量为$k$,源点向每个和总部直接联系的间谍连边,每个间谍向其能传递的间谍连容量为$m$的边,能与德军情报部进行联系的间谍向汇点连容量为$inf$的边,若最大流为$k$,则存在可行的方案。 处理可靠程度最大时,考虑用费用流解决,将每条边的安全程度看作边 阅读全文
posted @ 2020-04-14 23:01 lhm_liu 阅读(156) 评论(0) 推荐(0) 编辑
上一页 1 ··· 3 4 5 6 7 8 9 10 11 12 下一页