java算法
suger椰子
这个作者很懒,什么都没留下…
展开
-
Java的迪杰斯特拉算法(朴素版本and堆优化版本)基于Acwing849,850
迪杰斯特拉算法的两种写法,分别对应稀疏图和稠密图,当我们存储稠密图时用邻接矩阵进行存储,当我们存储系数图时用邻接表进行存储,朴素版本时间复杂度O(n^2),堆优化版本时间复杂度为O(mlog2n)import java.io.BufferedReader;import java.io.InputStreamReader;//朴素dij的时间复杂度为O(n^2),适用于稠密图,用邻接矩阵存储public class 朴素DIJ { public static int N = 510,n,m,INF=原创 2022-01-16 01:13:55 · 426 阅读 · 0 评论 -
PAT乙级1032挖掘机技术(JAVA)测试点3超时
为了用事实说明挖掘机技术到底哪家强,PAT 组织了一场挖掘机技能大赛。现请你根据比赛结果统计出技术最强的那个学校。输入格式:输入在第 1 行给出不超过 10 ^5的正整数 N,即参赛人数。随后 N 行,每行给出一位参赛者的信息和成绩,包括其所代表的学校的编号(从1 开始连续编号)、及其比赛成绩(百分制),中间以空格分隔。输出格式:在一行中给出总得分最高的学校的编号、及其总分,中间以空格分隔。题目保证答案唯一,没有并列。输入样例:63 652 801 1002 703 403原创 2022-01-03 21:12:34 · 529 阅读 · 0 评论 -
pat1008数组循环,2,3错误的原因
1008 数组元素循环右移问题 (20 分)一个数组A中存有N(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(≥0)个位置,(最后M个数循环移至最前面的M个位置)。如果需要考虑程序移动数据的次数尽量少,要如何设计移动的方法?输入格式:每个输入包含一个测试用例,第1行输入N(1≤N≤100)和M(≥0);第2行输入N个整数,之间用空格分隔。输出格式:在一行中输出循环右移M位以后的整数序列,之间用空格分隔,序列结尾不能有多余空格。如果2,3错是因为没有考虑到M大于原创 2022-01-01 14:19:49 · 156 阅读 · 0 评论 -
PAT1019数字黑洞(java版本)坑题2,3,4过不去的原因
给定任一个各位数字不完全相同的 4 位正整数,如果我们先把 4 个数字按非递增排序,再按非递减排序,然后用第 1 个数字减第 2 个数字,将得到一个新的数字。一直重复这样做,我们很快会停在有“数字黑洞”之称的 6174,这个神奇的数字也叫 Kaprekar 常数。例如,我们从6767开始,将得到7766 - 6677 = 10899810 - 0189 = 96219621 - 1269 = 83528532 - 2358 = 61747641 - 1467 = 6174现给定任意 4 位原创 2022-01-01 00:19:47 · 529 阅读 · 0 评论 -
p1576_最小花费(java)Dijkstra
题目描述在n个人中,某些人的银行账号之间可以互相转账。这些人之间转账的手续费各不相同。给定这些人之间转账时需要从转账金额里扣除百分之几的手续费,请问A最少需要多少钱使得转账后B收到100元。输入格式第一行输入两个正整数n,m,分别表示总人数和可以互相转账的人的对数。以下m行每行输入三个正整数x,y,z,表示标号为x的人和标号为y的人之间互相转账需要扣除z%的手续费 (z<100)。最后一行输入两个正整数A,B。数据保证A与B之间可以直接或间接地转账。输出格式输出A使得B到账10原创 2021-03-21 14:30:42 · 435 阅读 · 0 评论 -
p2307—迷宫(java)坑爹题
题目描述:小希非常喜欢玩迷宫游戏,现在她自己设计了一个迷宫游戏。在她设计的迷宫中,首先她认为所有的通道都应该是双向连通的,就是说如果有一个通道连通了房间A和B,那么既可以通过它从房间A走到房间B,也可以通过它从房间B走到房间A,为了提高难度,小希希望任意两个房间有且仅有一条路径可以相通(除非走了回头路)。小希现在把她的设计图给你,让你帮忙判断她的设计图是否符合她的设计思路。比如下面的例子,前两个是符合条件的,但是最后一个却有两种方法从5到达8。这道题就是并查集,判断是否有一棵生成树,但是,这道题恶心之处原创 2021-03-18 14:32:44 · 211 阅读 · 0 评论 -
p1451求细胞数量java实现
一道bfs的模板题,由于题目没有看懂,导致浪费了n多时间,最后通过下了一个测试点终于看懂了。题目描述:一矩形阵列由数字 0 到 9 组成,数字 1 到 9代表细胞,细胞的定义为沿细胞数字上下左右若还是细胞数字则为同一细胞,求给定矩形阵列的细胞个数。我觉得看了这道题的输出样例,应该会有兄弟理解为,只有当一个不为0的数上下左右都为不为0才算一个细胞吧。但是在我看了第二个测试点,一行0一行1却输出5之后,我才意识到,理解错了,这道题的意思是,找到一个不为0的细胞,如果这个细胞上下左右但凡有一个不为0的,那么这原创 2021-03-18 14:22:22 · 343 阅读 · 0 评论 -
p1195口袋里的云(java实现)
题目背景 小杉坐在教室里,透过口袋一样的窗户看口袋一样的天空。 有很多云飘在那里,看起来很漂亮,小杉想摘下那样美的几朵云,做成棉花糖。给你云朵的个数N,再给你M个关系,表示哪些云朵可以连在一起。现在小杉要把所有云朵连成K个棉花糖,一个棉花糖最少要用掉一朵云,小杉想知道他怎么连,花费的代价最小。本题通过代价最小可以锁定是最小生成树的题目,首选并查集,kurscal算法。本题关键在于审题,实现并没有难度,一开始老是挂,一开始的思路是,题目种说一个棉花糖最少要用掉一朵云,那么我每次连上一条边就能有2个.原创 2021-03-12 00:27:59 · 211 阅读 · 0 评论 -
java并查集实现krusual算法【模板】—洛谷p3366
krusual算法实现最小生成树,其实是并查集的应用,通过对每个点用并查集组合就可以获得一棵最小生成树。以洛谷的p3366为例子:题目:如题,给出一个无向图,求出最小生成树,如果该图不连通,则输出 orz。输入格式第一行包含两个整数 N,MN,M,表示该图共有 NN 个结点和 MM 条无向边。接下来 MM 行每行包含三个整数 Xi,Yi,ZiX 表示有一条长度为 Zi的无向边连接结点 Xi,Yi。输出格式如果该图连通,则输出一个整数表示最小生成树的各边的长度之和。如果该图不连通则输出 orz原创 2021-03-09 20:28:02 · 245 阅读 · 0 评论