上一页 1 2 3 4 5 6 7 8 9 10 ··· 16 下一页
摘要: Description 给定一棵树和若干操作,每次可以选取树上任意两点之间的路径染成一种颜色,或是查询任意两点之间路径上有多少段颜色。 Solution 树链剖分不解释,主要分析线段树的维护,在线段树区间上我们维护区间左端的颜色、右端的颜色、整个区间颜色段的数量。那么当我们合并两个区间时,我们首先将 阅读全文
posted @ 2019-07-14 13:42 AD_shl 阅读(201) 评论(0) 推荐(0) 编辑
摘要: Description 给定一个01矩阵,求出最大的正方形子矩阵和最大长方形子矩阵,并保证取出的矩阵中的元素都为0/1 Solution 为了使题目变成上述表述的形式,我们首先将读入的矩阵的部分元素xor1,使其变成一般形式 之后,这道题变成了两道题的合体:洛谷P2701巨大的牛棚与P4147玉蟾宫 阅读全文
posted @ 2019-07-06 15:27 AD_shl 阅读(298) 评论(0) 推荐(0) 编辑
摘要: Description 给定一个棋盘, 在棋盘上放入m个炮,使得炮两两之间不能攻击,求出方案数。 Solution 考虑设计一个dp,定义f[i][j][k]表示前i行、有j列放了一个炮、有k列放了两个炮的方案数。 有一个显然的结论:如果方案合法,那么任何一行(列)的炮的数量最多为2。 然后我们思考 阅读全文
posted @ 2019-07-06 14:29 AD_shl 阅读(208) 评论(0) 推荐(0) 编辑
摘要: Description Treap是一种简单的平衡树,可以实现插入元素,删除元素,求元素的排名,求排名为某某的元素,查询前驱后驱 treap的本质是一棵二叉搜索树。然而,二叉搜索树很容易使复杂度退化,所以我们在每个节点上产生一个随机值,按照堆的性质维护,这样treap的深度期望为logn。 在本题中 阅读全文
posted @ 2019-07-05 16:05 AD_shl 阅读(230) 评论(0) 推荐(0) 编辑
摘要: Description Solution 每个人能看到的动物只有5个,所以我们可以将这个进行状压,定义f[i][j]表示从第i开始的五个动物状态压缩后(移走或不移走)为j的最优结果 那么转移方程可以得到 其中,val表示这一步转移所获得的收益,由于动物园是环形的,所以初状态等于末状态,我们枚举末状态 阅读全文
posted @ 2019-07-04 11:25 AD_shl 阅读(250) 评论(0) 推荐(0) 编辑
摘要: 这是一道树形dp和状压dp结合的题目,思考量和代码细节都不少。 我们首先定义f[i][j]表示在以i为根的子树当中,建立分部的节点状压之后为j的最大收益 那么转移是显然的,定义k为i的儿子,那么f[i][j] = max(f[k][l] + f[i][j ^ l] + val). 其中val表示其他 阅读全文
posted @ 2019-07-03 20:35 AD_shl 阅读(253) 评论(0) 推荐(0) 编辑
摘要: 众所周知,乘法逆元可以通过Exgcd和费马小定理求解,如果我们在题目中需要预处理连续的一段数的逆元,我们需要更高效的算法求解。 1.线性递推求解乘法逆元 首先,我们声明在下列计算中同余均是在模p意义下 我们可以简单计算1-1≡1 考虑任意正整数i,假定i-1的逆元已经正确计算,我们递推方程的计算过程 阅读全文
posted @ 2019-06-26 17:29 AD_shl 阅读(720) 评论(0) 推荐(3) 编辑
摘要: 众所周知,扩展欧几里得算法(下文统称Exgcd)能求解二元一次方程的整数解,乘法逆元、线性模方程等。本文我将简单的介绍该算法。 形如ax+by=gcd(a,b) 的方程,我们可以用Exgcd求出其最小整数解。我们考虑如何求解。 当b=0时,方程右边的值为a,那么显然可得x=1,y=0。 现在假设当前 阅读全文
posted @ 2019-06-25 20:57 AD_shl 阅读(2040) 评论(2) 推荐(2) 编辑
摘要: 欧拉函数是指对于正整数x,小于或等于x的数中与x互质的数的数量,通常用φ(x)表示。 我们先看一道例题 对题意进行分析,可以得到最小生成树中的两个直接连通的点的gcd一定是1,我们要统计最小生成树的个数,也就是求1~n每个数的欧拉函数值之和。 因此,对于一个正整数x,我们需要计算欧拉函数φ(x)。 阅读全文
posted @ 2019-06-25 19:54 AD_shl 阅读(542) 评论(0) 推荐(0) 编辑
摘要: 这道题实质上是求序列的最长不下降子序列 按照题意,我们要求出最小的代价,也就是说我们要让尽可能大的代价不动,也就是求出最长不下降子序列,之后用序列的和减去它即可。 阅读全文
posted @ 2019-06-24 21:27 AD_shl 阅读(137) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 10 ··· 16 下一页