
DFS
csu_xiji
这个作者很懒,什么都没留下…
展开
-
力扣 282. 给表达式添加运算符 dfs 回溯
https://leetcode-cn.com/problems/expression-add-operators/思路:很明显的回溯了吧。。考虑每个位置的运算符种类有三种以及数字可以连起来,那么相当于每个位置有四种选择,直接暴力计算时间复杂度为O(4n)O(4^{n})O(4n),考虑nnn最大不过等于10,还是可以通过滴~需要注意的一个细节问题是,如果以位置iii为一个数的起始,且其为0,那么后续就不能再跟其他数字了!class Solution {public: vector<s原创 2021-10-17 00:45:14 · 192 阅读 · 0 评论 -
力扣 5848. 树上的操作 dfs 模拟
https://leetcode-cn.com/problems/operations-on-tree/思路:无聊的模拟题。class LockingTree {public: LockingTree(vector<int>& vec) { parent=vec; int n=parent.size(); tree.resize(n); for(int i=1;i<n;i++)原创 2021-09-05 00:49:20 · 170 阅读 · 0 评论 -
力扣 797. 所有可能的路径 dfs 回溯
https://leetcode-cn.com/problems/all-paths-from-source-to-target/思路:dfsdfsdfs回溯即可,感觉没什么好说的。因为是有向无环图,所以在一次dfsdfsdfs过程中不可能访问到已经访问过的节点,不需要引入额外的标记数组。class Solution {public: vector<vector<int>> allPathsSourceTarget(vector<vector<int>原创 2021-08-27 01:28:39 · 229 阅读 · 0 评论 -
力扣 802. 找到最终的安全状态 dfs染色法 / 建反图+拓扑排序
https://leetcode-cn.com/problems/find-eventual-safe-states/思路一:dfsdfsdfs染色,对于点uuu,如果正在访问它或者它的子节点,那么令color[u]=1color[u]=1color[u]=1;如果已经访问过它和所有子节点了,令color[u]=2color[u]=2color[u]=2;如果还未访问过令color[u]=0color[u]=0color[u]=0。那么如果递归的过程中,又访问到了一个颜色为1的点,则说明该节点的父节点不原创 2021-08-06 00:27:35 · 203 阅读 · 0 评论 -
力扣 1600. 皇位继承顺序 前序遍历
https://leetcode-cn.com/problems/throne-inheritance/思路:阅读理解题,读懂题目就很简单了。其实就是二叉树的前序遍历,只不过树的存储方式比较特殊。class ThroneInheritance {public: unordered_map<string,vector<string>> g; unordered_set<string> dead; string king; Thron原创 2021-06-25 22:05:53 · 126 阅读 · 0 评论 -
力扣 494. 目标和 爆搜 dp
https://leetcode-cn.com/problems/target-sum/思路一:爆搜出奇迹。class Solution {public: int findTargetSumWays(vector<int>& nums, int target) { return dfs(nums,0,target); } int dfs(const vector<int>&nums, int idx,int targe原创 2021-06-07 16:18:07 · 99 阅读 · 0 评论 -
力扣 959. 由斜杠划分区域 遍历/并查集
https://leetcode-cn.com/problems/regions-cut-by-slashes/思路:重点在于怎么把输入转换成图,我们可以把每个字符抽象为3*3的方格,认为斜杠所处的方格不能走,那么这个图的连通分量个数就是答案。并查集的思路也和这个类似,把每个字符抽象为4个拼在一起的三角形(实际上还是一个方格),然后对斜杠分类讨论即可,感兴趣的话可以看一下官方题解。class Solution {public: int d[4][2]={{0,1},{0,-1},{1,0}原创 2021-01-25 15:51:44 · 137 阅读 · 0 评论 -
团体程序设计天梯赛 L2-006 树的遍历 递归+思维
https://pintia.cn/problem-sets/994805046380707840/problems/994805069361299456思路:二叉树的后序遍历和中序遍历可以确定这颗二叉树的形状(左右根、左根右,找到根节点然后分出左右子树递归处理),那么最普通的思路就是据此建立出一颗二叉搜索树,那么再对其做层次遍历。但是这样写太麻烦了,我们考虑最开始所提到的递归过程,显然同一层的节点将按照从左至右的顺序被访问(不一定连续被访问哦),但是同一层有序已经满足我们的需求了,只不过最后需要按照深原创 2020-11-02 01:06:15 · 299 阅读 · 0 评论 -
力扣 1367. 二叉树中的列表 链表 dfs
https://leetcode-cn.com/problems/linked-list-in-binary-tree/思路:很自然的想到一种解法,即对树中的每个节点都做一次判断。双dfsdfsdfs即可。/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {}原创 2020-08-09 19:27:31 · 215 阅读 · 0 评论 -
力扣 109. 有序链表转换二叉搜索树 思维+中序遍历
https://leetcode-cn.com/problems/convert-sorted-list-to-binary-search-tree/思路一:高度平衡的二叉搜索树,即任意一个根节点均满足其左子树的高度与右子树的高度之差的绝对值<=1<=1<=1的二叉搜索树。那么每次都选择当前区间的中间节点作为根节点就可以做到平衡。如何选择中间节点呢?有两种办法:(1)(1)(1)直接从链表身上入手,利用快慢指针求中间节点。(2)(2)(2)先把链表的各个节点存到数组中,然后可以O(1)原创 2020-08-05 00:07:05 · 166 阅读 · 0 评论 -
力扣 144. 二叉树的前序遍历 递归/非递归
https://leetcode-cn.com/problems/binary-tree-preorder-traversal/思路一:根左右,递归版随便写。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), rig原创 2020-05-12 19:37:26 · 324 阅读 · 0 评论 -
力扣 面试题07. 重建二叉树 递归分治/非递归版
https://leetcode-cn.com/problems/zhong-jian-er-cha-shu-lcof/思路:先序遍历:根左右。中序遍历:左根右。那么可以由先序遍历得到根节点的值,依据此值再找到根节点在中序遍历的位置,那么就可以分出左子树和右子树,分治下去即可。/** * Definition for a binary tree node. * struct TreeNo...原创 2020-04-24 16:18:43 · 408 阅读 · 0 评论 -
力扣 面试题36. 二叉搜索树与双向链表 中序遍历dfs
https://leetcode-cn.com/problems/er-cha-sou-suo-shu-yu-shuang-xiang-lian-biao-lcof/思路:对一颗二叉搜索树进行中序遍历,即可得到有序的数组,如果用vectorvectorvector存储所有节点,那么很容易实现题目的需求。/*// Definition for a Node.class Node {pu...原创 2020-04-24 00:43:07 · 213 阅读 · 0 评论 -
力扣 面试题34. 二叉树中和为某一值的路径 栈+dfs
https://leetcode-cn.com/problems/er-cha-shu-zhong-he-wei-mou-yi-zhi-de-lu-jing-lcof/思路:搞个栈记录路径就行了,注意路径的定义……/** * Definition for a binary tree node. * struct TreeNode { * int val; * Tree...原创 2020-04-23 19:52:52 · 167 阅读 · 0 评论 -
力扣 面试题38. 字符串的排列 dfs+回溯
https://leetcode-cn.com/problems/zi-fu-chuan-de-pai-lie-lcof/思路:dfsdfsdfs+回溯,注意判重即可。自己实现的究极暴力版本:class Solution {public: bool vis[8]={0}; int pos[8]={0}; vector<string> ans; ...原创 2020-04-23 16:35:05 · 244 阅读 · 0 评论 -
力扣 面试题33. 二叉搜索树的后序遍历序列 dfs+分治
https://leetcode-cn.com/problems/er-cha-sou-suo-shu-de-hou-xu-bian-li-xu-lie-lcof/submissions/思路:假设某棵二叉搜索树的根节点的值为vvv,由二叉搜索树的性质易得:左子树的任意一个节点的值均小于vvv,右子树的任意一个节点的值均大于vvv,已知当前二叉搜索树的后序遍历为postorder[i…j]po...原创 2020-04-23 00:44:21 · 149 阅读 · 0 评论 -
牛客练习赛61 C 四个选项 dp\搜索+组合数学
思路一:dpdpdp,首先通过并查集处理出所有的连通块(限制条件),然后用dpi,x,y,z,wdp_{i,x,y,z,w}dpi,x,y,z,w表示处理第iii个连通块时,选了xxx个AAA、yyy个BBB、zzz个CCC、www个DDD时的方案数,枚举转移即可,详见代码。#include<bits/stdc++.h>#define INF 0x3f3f3f3fusing n...原创 2020-04-11 12:42:57 · 167 阅读 · 0 评论 -
codeforces 375D Tree and Queries 树上莫队
https://vjudge.net/problem/CodeForces-375D题目大意:给一棵有根树,根节点为111,每个节点有对应的颜色,mmm个询问(v,k)(v,k)(v,k),让你输出在以vvv为根的子树中,出现的次数>=k>=k>=k的颜色数目。思路:子树问题,可以通过dfsdfsdfs序将其转换为连续的一段区间,那么就可以上莫队搞了。用cnt[i]cnt[i...原创 2020-04-08 14:54:11 · 178 阅读 · 0 评论 -
SPOJ Count on a tree II 树上莫队
https://vjudge.net/problem/SPOJ-COT2题目大意:给一棵nnn个节点的数,每个节点有一种颜色,mmm个询问(u,v)(u,v)(u,v),你需要输出u、vu、vu、v这条链上的不同的颜色数目。思路:如果这道题是在区间内询问的,相信大家都能看出来是莫队。在树上怎么搞呢?树上莫队。通过欧拉序把链转换成区间,然后就可以做了。树上莫队的思想这里不想重复了,不懂的可以看下...原创 2020-04-08 01:53:14 · 228 阅读 · 0 评论 -
codeforces 1328E Tree Queries 思维 dfs序 LCA
https://vjudge.net/problem/CodeForces-1328E题目大意:给一棵树,根节点是111,mmm个询问,每次询问有lenlenlen个点,问能否找到一个点uuu,使得这lenlenlen个点要么在从uuu到根节点的路径上,要么距离这个路径的距离为111。思路:其实真的挺水的,当时居然没有想法,太菜了QAQQAQQAQ。首先做一波转换,令k[i]=fa[k[i]]...原创 2020-03-29 00:16:46 · 354 阅读 · 0 评论 -
力扣 124. 二叉树中的最大路径和 dfs+dp
https://leetcode-cn.com/problems/binary-tree-maximum-path-sum/思路:dfsdfsdfs就完事了,每个节点维护一个从叶子节点到当前节点的路径之和的最大值,有点dpdpdp的感觉。/** * Definition for a binary tree node. * struct TreeNode { * int val;...原创 2020-03-16 12:24:19 · 188 阅读 · 0 评论 -
codedorces 1296F Berland Beauty dfs+暴力
https://vjudge.net/problem/CodeForces-1296F题目大意:给出一棵有nnn个节点的无根树,对于mmm个询问(ui,vi,di)(u_i,v_i,d_i)(ui,vi,di)满足从uiu_iui到viv_ivi的路径上的边权的最小值是did_idi,如果可以满足的话输出n−1n-1n−1条边的权值,要求1<=fi<=1061<...原创 2020-02-06 19:59:26 · 724 阅读 · 0 评论 -
洛谷 P1993 小K的农场 差分约束+dfs_spfa判环
https://www.luogu.org/problem/P1993题目描述小K在MC里面建立很多很多的农场,总共n个,以至于他自己都忘记了每个农场中种植作物的具体数量了,他只记得一些含糊的信息(共m个),以下列三种形式描述:农场a比农场b至少多种植了c个单位的作物,农场a比农场b至多多种植了c个单位的作物,农场a与农场b种植的作物数一样多。但是,由于小K的记忆有些偏差,所以他想要知...原创 2019-10-29 15:03:21 · 122 阅读 · 0 评论 -
HDU 5961 传递(CCPC2016合肥) 建反图判断传递性
http://acm.hdu.edu.cn/showproblem.php?pid=5961Problem Description我们称一个有向图G是传递的,当且仅当对任意三个不同的顶点a,若G中有 一条边从a到b且有一条边从b到c ,则G中同样有一条边从a到c。我们称图G是一个竞赛图,当且仅当它是一个有向图且它的基图是完全图。换句 话说,将完全图每条边定向将得到一个竞赛图。下图展示的是一...原创 2019-10-19 16:38:37 · 419 阅读 · 0 评论 -
洛谷 P2921 Trick or Treat on the Farm 拓扑排序+dfs
https://www.luogu.org/problem/P2921题意翻译题目描述每年,在威斯康星州,奶牛们都会穿上衣服,收集农夫约翰在N(1<=N<=100,000)个牛棚隔间中留下的糖果,以此来庆祝美国秋天的万圣节。由于牛棚不太大,FJ通过指定奶牛必须遵循的穿越路线来确保奶牛的乐趣。为了实现这个让奶牛在牛棚里来回穿梭的方案,FJ在第i号隔间上张贴了一个“下一个隔间”Ne...原创 2019-10-15 00:09:39 · 119 阅读 · 0 评论 -
洛谷 P1330 封锁阳光大学 dfs染色
https://www.luogu.org/problem/P1330题目描述曹是一只爱刷街的老曹,暑假期间,他每天都欢快地在阳光大学的校园里刷街。河蟹看到欢快的曹,感到不爽。河蟹决定封锁阳光大学,不让曹刷街。阳光大学的校园是一张由N个点构成的无向图,N个点之间由M条道路连接。每只河蟹可以对一个点进行封锁,当某个点被封锁后,与这个点相连的道路就被封锁了,曹就无法在与这些道路上刷街了。非常悲剧...原创 2019-10-14 14:07:01 · 212 阅读 · 1 评论 -
洛谷 P1441 砝码称重 子集枚举+bitset
https://www.luogu.org/problem/P1441题目描述现有n个砝码,重量分别为a1,a2,a3,……,an,在去掉m个砝码后,问最多能称量出多少不同的重量(不包括0)。请注意,砝码只能放在其中一边。输入格式输入文件weight.in的第1行为有两个整数n和m,用空格分隔第2行有n个正整数a1,a2,a3,……,an,表示每个砝码的重量。输出格式输出文件wei...原创 2019-10-05 16:00:38 · 728 阅读 · 0 评论 -
洛谷 P2661 信息传递 拓扑排序+dfs
https://www.luogu.org/problem/P2661思路:其实就是求最小环。每个点的出度都是111,因此构成的图要么是一条链+一个环,要么是几个环,通过拓扑可以消去链状的部分,对环的部分dfsdfsdfs算最小环即可。#include <bits/stdc++.h>#define INF 0x3f3f3f3fusing namespace std;typed...原创 2019-10-05 18:52:16 · 166 阅读 · 0 评论 -
codeforces gym101630 Connections 反图+dfs
https://codeforces.com/gym/101630题目大意:给一个有向图,有nnn个点,mmm条边,保证m>2∗nm>2*nm>2∗n,保证输入没有重边且任意两个点均可达,现在要删除m−2∗nm-2*nm−2∗n条边,使得任意两个点仍可达,问要删除的边的编号。思路:保证:(1)从111出发能到达其他点;(2)从其他点出发能到达111;就可以满足题意,于是建一个...原创 2019-10-09 13:12:20 · 177 阅读 · 0 评论 -
洛谷 P1363 dfs
https://www.luogu.org/problemnew/show/P1363题目描述背景 Background(喵星人LHX和WD同心协力击退了汪星人的入侵,不幸的是,汪星人撤退之前给它们制造了一片幻象迷宫。)WD:呜呜,肿么办啊……LHX:momo...我们一定能走出去的!WD:嗯,+U+U!描述 Description幻象迷宫可以认为是无限大的,不过它...原创 2019-03-29 18:22:34 · 278 阅读 · 0 评论 -
洛谷 P1434 记忆化搜索
https://www.luogu.org/problemnew/show/P1434题目描述Michael喜欢滑雪。这并不奇怪,因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。Michael想知道在一个区域中最长的滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。下面是一个例子:1 2 3 4...原创 2019-02-21 13:51:14 · 292 阅读 · 0 评论 -
UVA 3902 Network dfs
https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1903题目大意:找出所有的深度大于kkk的叶子节点,在每个服务器可以作用kkk距离的情况下,问最少放置多少个服务器能使得这些叶子节点都可以被服务器覆盖。思路:nnn...原创 2019-09-25 17:44:48 · 271 阅读 · 0 评论 -
CodeForces 1214D Treasure Island dfs
题目大意:给出一个n∗mn*mn∗m的字符矩阵,′.′'.'′.′表示能通过,′#′'\#'′#′表示不能通过。每步可以往下或往右走。问至少把多少个′.′'.'′.′变成′#′'\#'′#′,才能让从(1,1)(1,1)(1,1)出发不能到达(n,m)(n,m)(n,m)。思路:仔细思考,不难发现答案只有0、1、20、1、20、1、2三种情况,考虑从起点(1,1)(1,1)(1,1)做一次dfs...原创 2019-09-25 12:47:49 · 218 阅读 · 0 评论 -
洛谷 P1162
https://www.luogu.org/problemnew/show/P1162题目描述由数字0组成的方阵中,有一任意形状闭合圈,闭合圈由数字1构成,围圈时只走上下左右4个方向。现要求把闭合圈内的所有空间都填写成2.例如:6×6的方阵(n=6),涂色前和涂色后的方阵如下:0 0 0 0 0 00 0 1 1 1 10 1 1 0 0 11 1 0 0 0 11 0 0 ...原创 2019-02-11 15:12:07 · 401 阅读 · 0 评论 -
洛谷 P1019 dfs回溯
https://www.luogu.org/problemnew/show/P1019题目描述单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的“龙”(每个单词都最多在“龙”中出现两次),在两个单词相连时,其重合部分合为一部分,例如 beast和astonish,如果接成一条龙则变为beastonish,另外相邻的两部...原创 2019-02-11 14:57:25 · 374 阅读 · 0 评论 -
洛谷 P1219 dfs回溯
https://www.luogu.org/problemnew/show/P1219题目描述检查一个如下的6 x 6的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行、每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子。上面的布局可以用序列2 4 6 1 3 5来描述,第i个数字表示在第i行的相应位置有一个棋子,如下:行号 1 2 3 4 5 6列号...原创 2019-02-11 14:26:49 · 259 阅读 · 0 评论 -
洛谷 P2089
https://www.luogu.org/problemnew/show/P2089题目背景猪猪hanke得到了一只鸡题目描述猪猪Hanke特别喜欢吃烤鸡(本是同畜牲,相煎何太急!)Hanke吃鸡很特别,为什么特别呢?因为他有10种配料(芥末、孜然等),每种配料可以放1—3克,任意烤鸡的美味程度为所有配料质量之和现在,Hanke想要知道,如果给你一个美味程度,请输出这10种配...原创 2019-02-10 19:03:50 · 302 阅读 · 0 评论 -
洛谷 1036 选数 搜索剪枝
https://www.luogu.org/problemnew/show/P1036题目描述已知 n 个整数 x1,x2,…,xn,以及1个整数k(k<n)。从n个整数中任选k个整数相加,可分别得到一系列的和。例如当n=4,k=3,4个整数分别为3,7,12,19时,可得全部的组合与它们的和为:3+7+12=223+7+19=297+12+19=383+12+19=...原创 2019-02-10 16:50:35 · 352 阅读 · 0 评论 -
洛谷 P1135 搜索
https://www.luogu.org/problemnew/show/P1135题目描述呵呵,有一天我做了一个梦,梦见了一种很奇怪的电梯。大楼的每一层楼都可以停电梯,而且第i层楼(1≤i≤N)上有一个数字Ki(0≤Ki≤N)电梯只有四个按钮:开,关,上,下。上下的层数等于当前楼层上的那个数字。当然,如果不能满足要求,相应的按钮就会失灵。例如:3,3,1,2,5代表了Ki(K1=3,K...原创 2019-02-16 16:22:39 · 264 阅读 · 0 评论 -
HDU 1035 dfs模拟
http://acm.hdu.edu.cn/showproblem.php?pid=1035A robot has been programmed to follow the instructions in its path. Instructions for the next direction the robot is to move are laid down in a grid. T...原创 2019-02-15 16:21:05 · 188 阅读 · 0 评论