java算法
文章平均质量分 68
玛卡左家陇分卡
铁道蒟蒻
展开
-
快速幂原理及模板 附练手题:P1226 【模板】快速幂||取余运算
P1226 【模板】快速幂||取余运算 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)原创 2022-12-09 12:20:15 · 138 阅读 · 0 评论 -
P3366 【模板】最小生成树 java prim算法 洛谷
Prim的思想是将任意节点作为根,再找出与之相邻的所有边(用一遍循环即可),再将新节点更新并以此节点作为根继续搜,维护一个数组:dis,作用为已用点到未用点的最短距离。:Prim算法之所以是正确的,主要基于一个判断:对于任意一个顶点v,连接到该顶点的所有边中的一条最短边(v, vj)必然属于最小生成树(即任意一个属于最小生成树的连通子图,从外部连接到该连通子图的所有边中的一条最短边必然属于最小生成树)可见,针对不同题目的不同的n和m的取值,我们可以依据实际情况选择kruskal和prim。原创 2022-11-30 14:47:10 · 351 阅读 · 0 评论 -
P3366 【模板】最小生成树 java Kruskal算法 洛谷
如果u和v在不同的连通分量,那么加入(u,v)一定是最优的。证明: 如果某个连通图属于最小生成树,那么所有从外部连接到该连通图的边中的一条最短的边必然属于最小生成树。所以不难发现,当最小生成树被拆分成彼此独立的若干个连通分量的时候,所有能够连接任意两个连通分量的边中的一条最短边必然属于最小生成树。这里使用并查集是一个很好的选择。如果两个节点不属于同一个集合,那么这条边就是我们要找的边,将这两个节点合并成同一个节点。u和v在同一个连通分量中(即u和v是连通的),那么加入(u,v)后会形成环,因此不能选择。原创 2022-11-29 15:38:20 · 340 阅读 · 0 评论 -
P3884 [JLOI2009]二叉树问题 洛谷-java-最近公共祖先
传送门:P3884 [JLOI2009]二叉树问题 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)题目求三个数字:二叉树深度、宽度和x,y之间的距离。使用lca求最近公共祖先的时候(对lca不熟的可以看这篇文章),会用到数组(这里姑且叫做dis数组)dis来记录每一个结点的深度,那么深度遍历一遍数组,就能得到最大深度了。原创 2022-11-28 12:45:58 · 225 阅读 · 0 评论 -
最近公共祖先lca基础 + 倍增进阶
我们定义int[][] fa = new int[maxn][maxn] , 不同于基础模板的int[] fa = new int[maxn],倍增优化使用二维数组,多出来的一维存放。好家伙,这么大的数据,这一组数据就是故意来卡暴力求解的,看来我们得在基础模板上加一些优化,这时候倍增优化就来了。对于有根树T的两个结点u、v,最近公共祖先LCA(T,u,v)表示一个结点x,满足x是u和v的。fa[now][i]=fa[fa[now][i-1]][i-1]可以理解为:now结点的第。原创 2022-11-27 15:58:04 · 215 阅读 · 0 评论 -
P3387 【模板】缩点 洛谷 java题解 连通图+拓扑排序
P3387 【模板】缩点 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)原创 2022-11-20 21:04:20 · 203 阅读 · 0 评论 -
P1262 间谍网络 java 洛谷 题解 tarjin算法
tarjin处理后,我们会得到一个新的图,(这里一定要注意,这个新的图的每一个点都是之前图的强连通分量,那么只要这个分量中任何一个点能被收买,那这个分量就能被收买,花费是分量中能被收买的点的最小值)在这个新的图中,如果所有入度为0的点都能被收买,是不是就可以控制所有点了?如果所有点都能被收买,那我们把入度为0的点的的花费加起来,就是答案了。因为java没有c++的struct,所以能用数组代替的地方我全用数组代替了,代码会显得复杂,但是数组用多了也就习惯了,而且数组更快,毕竟算法追求的就是快。原创 2022-11-01 17:40:40 · 292 阅读 · 0 评论 -
java在竞赛&刷题中的快速输入和输出StreamTokenizer&PrintWriter
java在竞赛&刷题中的快速输入和输出StreamTokenizer&PrintWriter原创 2022-10-28 14:26:08 · 897 阅读 · 0 评论