摘要: 解法 基础递推式 f[0] = 1; f[i] = (f[i 1] + m) % i; 输出时f[n]要加上1,因为推导过程是n个人在从0开始编号的情况下。 证明 略..... 阅读全文
posted @ 2019-11-14 19:44 Thomastine 阅读(118) 评论(0) 推荐(0)
摘要: "参考题解chennachuan_2004" 阅读全文
posted @ 2019-11-14 19:38 Thomastine 阅读(666) 评论(0) 推荐(0)
摘要: 简介 对于一个不存在负环的图,从起点到任意一个点最短距离经过的点最多只有 n 个。用 cnt[i] 表示从起点(假设是 1)到i的最短距离包含点的个数,初始化 cnt[1]=1,那么当我们能够用点u松弛点v时,松弛时同时更新cnt[v] = cnt[u]+1,若发现此时 cnt[v] n,那么就存在 阅读全文
posted @ 2019-11-14 19:31 Thomastine 阅读(266) 评论(0) 推荐(0)
摘要: 简介 1. 设$a_1,a_2,a_3......a_n$为n个整数,d是它们的最大公约数,那么存在整数$x_1......x_n$使得$x_1 a_1+x_2 a_2+...x_n a_n=d$。 2. 特别来说,如果$a_1...a_n$互质(不是两两互质),那么存在整数$x_1......x_ 阅读全文
posted @ 2019-11-14 15:58 Thomastine 阅读(340) 评论(0) 推荐(0)
摘要: 有向图 无向图 阅读全文
posted @ 2019-11-14 10:02 Thomastine 阅读(120) 评论(0) 推荐(0)
摘要: 简介 如果需要求出无根树上每一个点的答案,且一般树形dp只能一次求解(一般)一个点答案时,往往可以考虑二次换根。 基本思想 因为树形dp时以指定根为根的树内某节点子树的贡献会被计算,往往考虑使用已计算得到的这些贡献来求出其他点的答案(一般会在第一次计算出被指定为根的点的答案) 例题 "HDU 219 阅读全文
posted @ 2019-11-13 20:00 Thomastine 阅读(400) 评论(0) 推荐(0)
摘要: "BZOJ 4152" 分析 请 "%大佬博客" 注意:本题卡spfa; 阅读全文
posted @ 2019-11-13 10:04 Thomastine 阅读(178) 评论(0) 推荐(0)
摘要: 原理简介 非严格次小生成树是在最小生成树有多棵时未被选为最小生成树的树,而严格最小生成树要求其边权和是第一个大于最小生成树的边权和。两者算法大致相同,都是枚举非树边加入树中,很明显会形成一棵基环树,在基环的环(不包含加入的边)中找出最大值被加入边代替更新答案,只是单纯找最大得到非严格,而找出第一个严 阅读全文
posted @ 2019-11-10 22:58 Thomastine 阅读(270) 评论(0) 推荐(0)
摘要: 原理简介 众所周知,树链剖分模板是用来维护点上信息的,但是也可通过对边的转化维护边的信息。 由于只有n 1条边,一般选择将所有边挂在dep[]更深的点上结果使根节点上无值,然后修改原来处理链的函数,核心代码: ???为什么y一定在x的重儿子为根的子树上呢?我们考虑之前的while循环,设dep[to 阅读全文
posted @ 2019-11-10 21:35 Thomastine 阅读(203) 评论(0) 推荐(0)
摘要: 悬线法 介绍 可以用来解决最大子矩阵问题 原理分析 设L/R[i][j]表示自点(i,j)向左/右在不经过障碍点情况下能达到的最远点横坐标(图是数组画法时的横坐标),up[i][j]表示(i,j)向上能达到的最远点,初始化为up[i][j] = 1;R[i][j] = L[i][j] = j;得到的 阅读全文
posted @ 2019-11-09 21:28 Thomastine 阅读(609) 评论(0) 推荐(0)