![](https://img-blog.csdnimg.cn/direct/a0edca147fe54e3d9b007e955d4fcfad.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
不会算法的程序员玩不好原神
文章平均质量分 79
记录比较实用的算法与数据结构,以及一些巧妙的思路和一些好用的 API
花下的晚风
孤独是生命的礼物
展开
-
图论进阶之路-最短路(Floyd)
4.若最后需要得到最短路路径:可以通过 先找到 路径矩阵的位置,得到前一个点,再找到该点与前一个点的前一个点,直到前一个点变成自身为止。1.初始化 D,P 矩阵,D 矩阵初始化为所有结点的入度距离,P 矩阵 初始化为所有结点的入度结点。准备:需要两个矩阵,一个记录最短距离(D),一个记录最短路径的最后一个结点(P)先找到 1 -> 0 的最近的前一个结点,也就是 P[1][0] = 2。继续往前找,1 -> 2 的前一个结点,也就是 P[1][2] = 1。如:我们要找到 v1 到 v0 的最短路径。原创 2024-08-03 00:35:44 · 748 阅读 · 0 评论 -
第十五届蓝桥杯 java B组国一,我的心路历程
其次,细心很重要,细心很重要,细心很重要,蓝桥杯是oi赛制,你并不能知道自己的提交结果,因此,很有可能出现一道题你以为你能拿满分了,结果由于一个小小的失误,导致满分变零分,因此,只要你能保证自己会写的都写对,我觉得省一问题是不大的,因为大多数人都会犯粗心的错误,哪怕是那些大佬,也有可能在一道简单、中等题上犯错,这便是你可能超越大佬的机会,哪怕你只会打暴力,只要暴力都是对的,也有很大可能进国赛,不过能够写出最优解是最好的。6月2号,成绩公布了,没想到这次出成绩居然这么快,拿下国赛一等奖,我直接原地起飞!原创 2024-06-03 09:12:28 · 497 阅读 · 2 评论 -
史上最强逻辑题-测试你是否具有超强逻辑推理能力
三神问题:现在你的面前有三个神,一个真神,他只能说真话;一个伪神,他只能说假话;一个任意神,他的话有真有假。现在你可以向三个神提出总共三个问题(可以选择任意神提问,一个神可以被提问多次),他们只会回答你 da 或 yu,你需要自行判断 da 或 yu 代表的含义为 是或否。你能否通过这三个问题推测出三个神的身份?原创 2024-07-15 18:51:04 · 313 阅读 · 0 评论 -
图论进阶之路-常规bfs
看到这道题的第一个想法便是广度优先搜索每一个海洋,将每一个海洋距离陆地最近的曼哈顿距离得到,返回最大的距离。具体的,我们宽度优先搜索每一个陆地,将每一个搜索过的陆地标记,每次延伸将陆地的影响加1,返回最大延伸值 (即宽度优先搜索完 gird 所需要的轮数)请你找出一个海洋单元格,这个海洋单元格到离它最近的陆地单元格的距离是最大的,并返回该距离。海洋单元格 (1, 1) 和所有陆地单元格之间的距离都达到最大,最大距离为 2。答案是可以的,我们采用逆向思维,不求海洋距离陆地的最短距离,而是求陆地的影响力。原创 2024-04-25 20:20:34 · 419 阅读 · 1 评论 -
图论进阶之路-最小生成树模版
这是一道典型的最小生成树模版题,最短生成树的思路其实很简单,就是不断拿到权值最小的边,判断两端结点是否在一个集合内,若不在,证明该边是最短生成树的一条边,其中难点就在于如何判断两端结点是否在一个集合内,但是,在学习了并查集后这个难点也变得唾手可得。对于 100%100% 的数据:1≤𝑁≤50001≤N≤5000,1≤𝑀≤2×1051≤M≤2×105,1≤𝑍𝑖≤1041≤Zi≤104。如题,给出一个无向图,求出最小生成树,如果该图不连通,则输出。对于 20%20% 的数据,𝑁≤5N≤5,𝑀≤20M≤20。原创 2024-04-23 22:38:27 · 506 阅读 · 0 评论 -
图论进阶之路-拓扑排序模版
总共有 2 门课程。学习课程 1 之前,你需要先完成课程 0;并且学习课程 0 之前,你还应先完成课程 1。总共有 4 门课程。要学习课程 3,你应该先完成课程 1 和课程 2。并且课程 1 和课程 2 都应该排在课程 0 之后。总共有 2 门课程。要学习课程 1,你需要先完成课程 0。返回你为了学完所有课程所安排的学习顺序。总共有 2 门课程。学习课程 1 之前,你需要完成课程 0。在选修某些课程之前需要一些先修课程。如果不可能完成所有课程,返回。因此,一个正确的课程顺序是。原创 2024-04-23 20:30:33 · 599 阅读 · 0 评论 -
图论进阶之路-最短路模版(基于小根堆实现)
743. 网络延迟时间有n个网络节点,标记为1到n。给你一个列表times,表示信号经过有向边的传递时间。,其中ui是源节点,vi是目标节点,wi是一个信号从源节点传递到目标节点的时间。现在,从某个节点K发出一个信号。需要多久才能使所有节点都收到信号?如果不能使所有节点收到信号,返回-1。2示例 2:1示例 3:-1ui!= vi所有(ui, vi)对都互不相同(即,不含重复边)这是一道典型的模版题,我给出了基于小根堆的实现方案,并给每一步的作用注释了详解。原创 2024-04-19 17:51:15 · 938 阅读 · 0 评论 -
位运算进阶之路-3-位运算解决N皇后问题
还是和上面一样,枚举行,每一次深搜,我们用二进制中为 1 的位置表示我们可以放置皇后的位置,每次我们将这一轮的皇后放置情况向下一层传递,并将这一层的放置情况左移和右移一位向下一层传递,排除对角线的可放置情况。数学推论的方法可以做,但是其中公式推导难免有些耗费时间,我们有更好的可以排除斜线的情况的方法,那便是位运算。对于每次递归,我们处理这一行的所有列,判断是否能够放皇后,将能放的位置都放上皇后再继续往下深搜。为了保证推理的正确性,我们用公式打印 10 * 10 的第二行的斜和反斜的分布情况用作测试。原创 2024-04-18 17:44:01 · 802 阅读 · 1 评论 -
位运算进阶之路-2
仔细思考,按位与操作只有当两个数二进制串的相同位置都为 1 的时候才为 1,那么 right 中 1 的个数以及位置一定是涵盖了答案 的所有 1 的,故我们可以慢慢的缩小范围,每次将 right 的最低位的 1 换为 0,直到 right原创 2024-04-17 23:52:59 · 635 阅读 · 1 评论 -
位运算进阶之路-1
我是这样记忆的,大家应该玩过齿轮式的密码锁,我们可以将其想象为拨动只有0、1数字的密码锁,>> 向右拨动,原创 2024-04-16 22:57:19 · 1240 阅读 · 0 评论 -
有趣的题目:从装有 n 个白球 和 m 个黑球的袋子中不断拿出两球,求最后一个球的颜色
0 0 最终颜色judge1:白 ----- 最终颜色judge2:白。0 2 最终颜色judge1:白 ----- 最终颜色judge2:白。0 4 最终颜色judge1:白 ----- 最终颜色judge2:白。1 0 最终颜色judge1:白 ----- 最终颜色judge2:白。1 2 最终颜色judge1:白 ----- 最终颜色judge2:白。2 0 最终颜色judge1:白 ----- 最终颜色judge2:白。3 0 最终颜色judge1:白 ----- 最终颜色judge2:白。原创 2024-04-15 21:39:45 · 350 阅读 · 1 评论 -
对Java打比赛和做题有用的API以及模版(个人总结)
以下是我打比赛常用的API,以及一些实用小技巧和常识,有些久了不用可能会忘,所以想在这里记录一下,也可以供大叫参考。以上便是我目前所用过的API以及常用模型,后面遇到了新的实用的算法或者API再更新吧。原创 2024-04-15 19:29:42 · 1039 阅读 · 1 评论 -
餐厅有6,8人座的桌子,求 n 个人最少需要多少张桌子才能坐满(若有桌子未坐满返回-1)
我们可以用暴力递归的方法打印出 1~100 的结果,然后通过递归结果总结出规律,从而优化时空复杂度。做题思路:暴力深搜找规律。原创 2024-04-15 18:42:22 · 256 阅读 · 1 评论