随笔分类 -  算法

算法学习心得
摘要:定义 快速求a^b%c的算法 原理 指数可以被二进制分解 那么a^b可以分解为a^2^k1*a^2^k2*…… 又显然a^2^(k+1)=a^(2^k*2)=(a^2^k)^2 所以可以将指数在二进制下从低位向高位递推,每次将底数平方,若该位是1就将答案乘上底数,直到指数为0。 实现时可以每次将指数 阅读全文
posted @ 2018-10-16 20:19 李昊哲 阅读(1035) 评论(0) 推荐(0)
摘要:概述 若一个无向图的结点可以分为不相交的两个部分使得每条边的两个端点分别在不同的部分,则称这样的无向图为二分图(bipartite graph) 算法:黑白二着色(bicoloring) 扫描所有结点,从未访问过的结点开始,将其为染色邻接点染为不同的染色。若已染色的邻接点与当前结点颜色相同,则该图不 阅读全文
posted @ 2018-08-24 15:28 李昊哲 阅读(515) 评论(0) 推荐(1)
摘要:概述 在一个无向图中,若任意两点间至少存在两条“点不重复”的路径,则说这个图是点双连通的(简称双连通,biconnected) 在一个无向图中,点双连通的极大子图称为点双连通分量(简称双连通分量,Biconnected Component,BCC) 性质 算法 在Tarjan过程中维护一个栈,每次T 阅读全文
posted @ 2018-08-23 22:59 李昊哲 阅读(7421) 评论(13) 推荐(8)
摘要:这是一篇玄学文章 一、编译优化 1 #pragma GCC optimize("O3") 2 #pragma G++ optimize("O3") 比赛时除非遇到常数很大可能会卡的暴力题否则一定不要用!玩火自焚! 二、I/O优化 核心:利用getchar()和putchar()这两个底层函数和位运算 阅读全文
posted @ 2018-08-22 22:55 李昊哲 阅读(688) 评论(0) 推荐(0)
摘要:概述 在一个无向图中,若删除某个点u后连通分量数目增加,则称点u为该无向图的一个割点(cut vertex) 引理 无向连通图DFS树 从一个节点出发进行DFS,将后访问的结点设为前访问结点的孩子,DFS经过的边叫做DFS树的树边(tree edge),第一次处理时从后代(descendant)指向 阅读全文
posted @ 2018-08-22 17:39 李昊哲 阅读(587) 评论(0) 推荐(0)