摘要: 这个博客里最值得看和打印的东西的目录。带 号的为对这个知识点的相关应用都比较完整的版本。 其他 "[模板 快速输入输出]" "[模板 宏调试]" "[模板 SG函数]" 动态规划 "[模板 区间DP]" "[模板 数位DP]" 搜索 "[模板 A 搜索]" 数据结构 "[模板 双向链表]" "[模板 阅读全文
posted @ 2019-07-24 01:07 韵意 阅读(381) 评论(0) 推荐(0) 编辑
摘要: 因为某个特殊的原因(其实是看到亚丝娜酱,感觉自己被充电了),突然觉得有事情可以做。继续在这里更新在计算机学习过程中遇到的各种事情。向某个某种意义的学长https://www.cnblogs.com/DaD3zZ-Beyonder/学习。加油呀布丁酱!https://www.cnblogs.com/p 阅读全文
posted @ 2019-03-04 21:43 韵意 阅读(195) 评论(0) 推荐(0) 编辑
摘要: 质数筛 cpp const int MAXN = 1e7; int p[MAXN], ptop; void sieve(int n) { for(int i = 2; i 阅读全文
posted @ 2019-09-03 00:04 韵意 阅读(292) 评论(0) 推荐(0) 编辑
摘要: 在模数为0或1的时候,会出现一些奇怪的结果。 阅读全文
posted @ 2019-08-19 11:11 韵意 阅读(352) 评论(0) 推荐(0) 编辑
摘要: https://scut.online/p/492 求[1,a]范围内的a模m的逆元的数量。 一开始用扩展欧几里得算法草了一发,WA了,当时不太清楚模非质数的周期,看来扩展欧几里得算法的笔记才知道要加上m/(gcd(a,m)),但实际上用扩展欧几里得算法能求出逆元,gcd(a,m)必然是1,所以实际 阅读全文
posted @ 2019-08-19 10:41 韵意 阅读(291) 评论(0) 推荐(0) 编辑
摘要: 像平衡树一样,只不过左子树表示的是[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) 编辑
摘要: https://codeforces.com/contest/1203/problem/D2 上次学了双指针求两个字符串之间的是否t是s的子序列。但其实这个双指针可以求出的是s的前i个位置中匹配t的最长的前缀。反过来求一次可以得到最长的后缀。 然后怎么找要删除的位置呢?暴力n^2肯定可以,然后线性写 阅读全文
posted @ 2019-08-15 04:28 韵意 阅读(289) 评论(0) 推荐(0) 编辑
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=6662 仿照 CC B TREE 那道题的思路写的,差不多。也是要走路径。 像这两种必须走到叶子的路径感觉是必须从INF出发,使得它强制从子树转移过来。否则假如可以在中间节点中断的话,初始值就是0,转移的时候假如子 阅读全文
posted @ 2019-08-14 18:52 韵意 阅读(285) 评论(0) 推荐(0) 编辑
摘要: 直接给他缩点然后求新的图的完整版: C2[u]表示缩点后的u点这个环上的点实际上是哪些 G3[u]表示缩点后的u点的出边 还是一样,要记得先处理入链。(可以让这个图好看一点但是没啥鸟用)入链可能会有一些特别的性质,当然假如入链没有特别性质也可以直接缩点。 不对其实直接缩点就可以了,入链还是新图的入链 阅读全文
posted @ 2019-08-13 16:53 韵意 阅读(237) 评论(0) 推荐(0) 编辑
摘要: Kosaraju算法 O(n+m) https://www.luogu.org/problem/P1262 首先考虑假如一个间谍没办法被揭发不能被贿赂,也就是他不是可行的入口点也没有别人指向他,那么无解。 否则可能要若干个入度为0的点,这些点必须被贿赂,且这些点能到达的点不需要再贿赂。 否则一定存在 阅读全文
posted @ 2019-08-13 14:37 韵意 阅读(321) 评论(0) 推荐(0) 编辑
摘要: Kruskal算法要对边排序,然后打个并查集维护,但是实际上Prim有他好玩的地方,就把Dijkstra的到点的距离从dis[v]:dis[u]+w改成边dis[v]:w。 那肯定是Prim好写一点。Prim感觉复杂度是O((n+m)logn),Kruskal是O(n+mlogm)。 cpp inc 阅读全文
posted @ 2019-08-13 14:10 韵意 阅读(185) 评论(0) 推荐(0) 编辑