摘要: 像平衡树一样,只不过左子树表示的是[l,mid]的所有值,右子树表示的是[mid+1,r]的所有值,一般是维护一个cnt就可以类似在平衡树上面二分出第k小,也可以求出第k小的值在主席树中是哪个元素。当然根据你的想象力,所有只跟左子树或者右子树单侧相关的都可以找。 cpp include define 阅读全文
posted @ 2019-08-16 15:43 韵意 阅读(223) 评论(0) 推荐(0) 编辑
摘要: https://ac.nowcoder.com/acm/contest/889/B 假如我们能够求出 $x y$ 在模p意义的值,那么就可以和 $x+y$ 联立解出来了。 由于 $(x y)^2=(x+y)^2 4xy=b^2 4c$ ,那么设 $n=b^2 4c$ ,就是要求解出一个二次剩余。 阅读全文
posted @ 2019-08-16 15:10 韵意 阅读(242) 评论(0) 推荐(0) 编辑
摘要: 又被二次剩余调教了。 以下,p是奇质数。 如果存在一个x,使得 $x^2=n\; mod \; p$ ,则n是p的一个二次剩余。 勒让德符号: $(\frac{n}{p})$ 当n是p的二次剩余, $(\frac{n}{p})=1$ ; 当n不是p的二次剩余, $(\frac{n}{p})= 1$ 阅读全文
posted @ 2019-08-16 15:02 韵意 阅读(496) 评论(0) 推荐(0) 编辑
摘要: https://www.luogu.org/problem/P3225 这个东西有点绕。 最平凡的情况,整个原图只有一个点,那么它坍塌了之后就没有点了,不需要进行任何逃生。否则,当一个点坍塌之后,每个其他点的工人都要逃向逃生出口。 首先把双连通分量缩点,缩点完成之后必定是一片森林,树与树之间是乘法原 阅读全文
posted @ 2019-08-16 13:18 韵意 阅读(374) 评论(0) 推荐(0) 编辑
摘要: https://www.luogu.org/problem/P3469 翻译:一个原本连通的无向图,可以删除图中的一个点,求因为删除这个点所导致的不连通的有序点对的数量。或者说,删去这个点之后,各个连通分量的大小的乘积之和? 当然是考虑新学的Tarjan法求割点。一遍Tarjan给每个点记录他是不是 阅读全文
posted @ 2019-08-16 08:00 韵意 阅读(226) 评论(0) 推荐(0) 编辑
摘要: 边双连通 DFS找桥并判断边双连通 首先,对原图进行 DFS。 如上图所示,黑色与绿色边为树边,红色边为非树边。每一条非树边连接的两个点都对应了树上的一条简单路径,我们说这条非树边 覆盖 了这条树上路径上所有的边。绿色的树边 至少 被一条非树边覆盖,黑色的树边不被 任何 非树边覆盖。 我们如何判断一 阅读全文
posted @ 2019-08-16 02:55 韵意 阅读(277) 评论(0) 推荐(0) 编辑
摘要: 割点: 对于根节点,判断是不是割点很简单——计算其子树数量,如果有2棵即以上的子树,就是割点。因为如果去掉这个点,这两棵子树就不能互相到达。 对于非根节点,判断是不是割点就有些麻烦了。我们维护两个数组dfn[]和low[],dfn[u]表示顶点u第几个被(首次)访问,low[u]表示顶点u及其子树中 阅读全文
posted @ 2019-08-16 02:50 韵意 阅读(175) 评论(0) 推荐(0) 编辑