算法描述 有一个n个点、m条边的有向/无向有权图,判断该图中有没有负环。 注意:图并不一定所有点都是联通的。 负环的定义:图中形成了一个环,且环上面的边权之和为负数。 例题:AcWing 852. spfa判断负环 分析与解法 负环是在写最短路(尤其是 SPFA)的问题中需要考虑的问题,它会导致程序陷入
考场 开题,感觉 T1 很像 dky 讲过的一道中北大学 ACM 题,T3 一看就是随机化,具体不知道怎么做。 T1 sb 题,直接取当前最小的光滑数,把它乘一个质因子放入候选集。类似《蚯蚓》开 B 个队列即可,\(O(KB)\)。 T3 推出了四元二次方程组,不会解。。。考虑过枚举 \(s\)。 T2 貌似可以状压?两个质
题解 \(by\;zj\varphi\) 一道 \(\rm dp\) 题。 现将所有种类从小到大排序,然后判断,若最小的已经大于了 \(\rm l\),那么直接就是一个裸的完全背包,因为选的总数量有限制。 设 \(\rm f_{i,j,k}\) 为选了前 \(\rm i\) 种物品,总数为 \(\rm j\),容量为 \(\rm k\),是否可行,转移很简单。 对于
目录day06:栈&队列&优先队列 day06:栈&队列&优先队列 栈:限定只在表尾进行删除插入操作的线性表。 也就是后进先出(LIFO-last in first out):最后插入的元素最先出来。 把允许删除的一端称为栈顶(Top),另一端称为栈底(Bottom).不含任何数据元素的栈称为空栈。 栈的插入操作,叫作进栈,栈的删
文章目录 1、描述2、关键字3、思路4、notes5、复杂度6、code 1、描述 从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。 例如: 给定二叉树: [3,9,20,null,null,15,7], 3 / 9 20 / 15 7 返回: [3,9,20,15,7] 来源:力扣(LeetCode) 链接:https://leetcode
详细思路 层序遍历,push更新答案pop,固定大小,最后翻转答案 class Solution { public: vector<vector<int>> levelOrderBottom(TreeNode* root) { if(!root)return {}; queue<TreeNode*>que; que.push(root); vector<vector<int&g
详细思路 dfs,判断root1root2两棵树是否为镜像 精确定义 dfs,树root1和数roo2是否为镜像,如果都是空true,如果一个空false,如果val不同是false, 否则判断树roo1->left和树root2->right是否镜像,也要判断树root1->right和树root2->left是 否为镜像 class Solution { public:
令 \(f_i\) 表示最后一座桥的右端点在第 \(i\) 根柱子所需的最小代价,对 \(w\) 做一遍前缀和: \[f_i=\min\{f_j+(h_i-h_j)^2+w_{i-1}-w_j|0\leq j<i\} \]考虑两个决策点 \(j,k(h_j<h_k)\),假设 \(j\) 对于当前点 \(i\) 更优: \[f_j+(h_i-h_j)^2+w_{i-1}-w_j<f_k+(h_i-h_k)^2+w_{i-1}-w
T . Ideal Path 题目就是说给一个n,和一个m,起始点在1,问从1到n的最短路径长度和在此过程中最小的颜色序号。 有m行,表示a,b,联通并且颜色为c; 可以先从n点出发,bfs找出每个点相对n的最短距离,再从起始点出发bfs并判断最短颜色序。 #include<bits/stdc++.h> using namespace std; ty
Leecode218:天际线问题 题目链接 [2021_07_13] 联想到的题型:方法——优先队列进行优化求解 会议室II 城市的天际线是从远处观看该城市中所有建筑物形成的轮廓的外部轮廓。给你所有建筑物的位置和高度,请返回由这些建筑物形成的 天际线 。 每个建筑物的几何信息由数组 building
102.二叉树的层序遍历Java 题目描述 给你一个二叉树,请你返回其按层次遍历得到的节点值。即逐层从左到右访问所有节点。 输入输出样式 示例1: tn = [3,9,20,null,null,15,7] 输出:[[3], [9, 20], [15, 7]] 本题来自LeetCode:https://leetcode-cn.com/problems/binary-tree-leve
https://vjudge.net/problem/POJ-3984 它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的最短路线。 用bfs,保存每一个点前面的点 wa的原因是x=pre[x][y][0]; y=pre[x][y][1]; 有先后问题,就另设变量 #include<stdio
树的层级遍历?用队列实现层次遍历,所以不需要另写一个helper函数递归 1. 层级遍历 无意的ac 误打误撞的 看了题解面试题55 - I. 二叉树的深度(后序遍历、层序遍历,清晰图解) - 二叉树的深度 - 力扣(LeetCode) (leetcode-cn.com),仿照着写了c++,但是这里我res初始化是-1,最后也ac了,看了下代
参考链接 https://www.bilibili.com/video/BV1et411b73Z?p=213 queue容器 基本概念 Queue是一种先进先出(First In First Out, FIFO)的数据结构,它有两个出口 队列容器允许从一端新增元素,从另一端移除元素 队列中只有对头和队尾可以被外界使用,因此队列不允许有遍历行为 构造
你正在玩一款电子游戏,在游戏中你需要保护城市免受怪物侵袭。给你一个 下标从 0 开始 且长度为 n 的整数数组 dist ,其中 dist[i] 是第 i 个怪物与城市的 初始距离(单位:米)。 怪物以 恒定 的速度走向城市。给你一个长度为 n 的整数数组 speed 表示每个怪物的速度,其
难度:困难。 标签:广度优先搜索,数组,哈希表。 这个题之前做过,印象深刻,还记得怎么做。 重点是要将公交车作为广搜的节点。使用公交站的话会超时。 正确解法: class Solution { public: int numBusesToDestination(vector<vector<int>>& routes, int source, int target) {
目录 题目:279. 完全平方数示例1示例2提示: 解题思路及代码(1)完全背包问题-动态规划(2)动态规划+空间优化(3)BFS 题目:279. 完全平方数 难度: 中等 题目: 给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, …)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。 给你
101. 对称二叉树 题目链接 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/symmetric-tree/ 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 题目描述 题目分析 递归法 class Solution { public: bool isSymmetric(TreeNode* root) {
思路 很明显的最短路,建完图后,直接跑dijkstra即可,细节见代码。 答案:10266837 Code #include<iostream> #include<queue> #include<memory.h> using namespace std; typedef long long ll; const int Max = 1e6 + 5; int u[Max], v[Max], w[Max]; int g = 0, first[Max], ne
前序遍历版(牛客版): public class Solution { StringBuilder path=new StringBuilder(); String Serialize(TreeNode root) { preOrder(root); return path.toString(); } void preOrder(TreeNode root){ if(root==null){
典型的BFS题目。 class Solution: def getFood(self, grid: List[List[str]]) -> int: Row = len(grid) Col = len(grid[0]) initx = inity = -1 for i in range(Row): for j in range(Col): if grid[i][j] ==
一、题目 二、思路 思路一:递归 for循环,每次判断deep与每一个子树深度的大小;注意不要用三目运算符,会进行两次重复的递归,超出时间 思路二:层次遍历 利用队列来解决,首先添加头结点,然后定义一个指针等于这个节点,添加进这个节点的子节点,删除这个头结点 三、思路一代码 /* // Defin
https://codeforces.com/problemset/problem/1183/E 思路:easy版本用贪心即可。一层层找。k总共只有100个 #include<iostream> #include<vector> #include<queue> #include<cstring> #include<cmath> #include<map> #include<set> #include<cstdio&
CF1452G - Game On Tree 题目大意 A和B在树上Van游戏,每个人操作一些点 A操作一个点\(i\),B操作一个点集\(a_j\) 每轮A,B分别进行操作,可以对于自己的所有点任意移动1步或0步 在某一轮,当A的点碰到B的点时游戏结束 A希望尽量迟结束,B希望尽量早结束 给定B的初始点集\(a_j\),对于A的每个
AtCoder Beginner Contest 187 D - Choose Me 题意 现给定\(n\)个城市,第\(i\)城市分别有\(a_i\)个人投票给\(A\),有\(b_i\)个人投票给\(B\),现在\(B\)可以选择到一些城市演讲,\(B\)所到达的城市中的所有人将会给他投票,其他城市的人,支持\(A\)投票的人将依旧给\(A\)投票,但是支持\(B