题目: 解答: 方法:深度优先搜索 思路和算法: 首先,让我们找出给定的两个树的叶值序列。之后,我们可以比较它们,看看它们是否相等。 要找出树的叶值序列,我们可以使用深度优先搜索。如果结点是叶子,那么 dfs 函数会写入结点的值,然后递归地探索每个子结点。这可以保证按从左到右的顺序访问每片叶子,因为 ...
分类:
其他好文 时间:
2020-05-03 16:51:37
阅读次数:
50
题目: 解答: 从根节点开始遍历,每向下一个节点,我们可以把父节点传入的值左移一位并或上当前节点的值。 int newval = val << 1 | node->val; 这样我们就得到了一个从根节点到当前节点表示的数值。接下来我们要做的只是判断一个节点是不是叶子节点,如果是的话就累加,否则继续。 ...
分类:
其他好文 时间:
2020-05-03 16:34:47
阅读次数:
89
不得不复习一下网络流了,先复习最大流模板吧 最主要的就是dfs和bfs过程吧 bfs是为了分层和判断是否需要继续 显然对于一个图,分层之后,对于任一一边,起点要么加一等于终点,要么终点小于起点 终点小于起点的显然已经计算过,不需要松弛() 判断是否需要继续增广实际上是看终点是否有depth就可以解决 ...
分类:
其他好文 时间:
2020-05-03 15:06:04
阅读次数:
70
前言 怀疑昨天晚上考试的时候没带脑子。。。 Solution 这道题可以直接暴力 $QwQ$。(我是来证一波时间复杂度的 我们注意到一个很重要的条件 $1 include using namespace std; int n, m, q, a[55], b[55], c[55], d[55], A[ ...
分类:
其他好文 时间:
2020-05-03 12:33:17
阅读次数:
54
不靠谱做法:随机化。 靠谱做法:观察发现当k<4时,答案一定处于一个关键矩形(min(r[i]),max(l[i]),min(y[i]),max(x[i]))的边界。 如果不处在边界上,显然可以把它移到边界。 当k<4时,由抽屉原理可得一定有一个关键点在某个定点。 搜索所有顶点,在搜索中可以删除这个 ...
分类:
其他好文 时间:
2020-05-03 10:47:19
阅读次数:
66
判断一个9*9数组是否满足数独游戏规则:每行、每列、每3*3小格不能有相同的数。我的方法是按行进行遍历,同时用9个数组存储每列的数字,再用3个数组存储3个小格的数字(这3个数组每遍历完三行进行一次清空);遍历的同时判断新发现的数字在对应的行、列、3*3小格里是否已经存在,存在的话直接返回False。 ...
分类:
其他好文 时间:
2020-05-02 22:32:56
阅读次数:
71
#include<bits/stdc++.h> using namespace std; #define int long long const int maxn = 110; int k, m; int a[maxn], v[maxn][maxn]; int ans; void dfs(int p ...
分类:
其他好文 时间:
2020-05-02 16:38:49
阅读次数:
44
dfs,thread,python3,defaultdict,换根dp Counter,元组map 捕获异常 数组排序翻转切片 bfs accumulate 二维数组读入,math库调用 字符串 counter数组 bisect(lower_bound upper_bound) 列表推导式 dfs, ...
分类:
编程语言 时间:
2020-05-02 14:33:59
阅读次数:
82
前置芝士: dfs,强连通分量 一般的k-sat问题就是给你n个变量$a_i$,每个变量有k个取值,然后给你一堆条件让你求出满足所有条件的一组解。 而当k>2时已经被证明为NP完全问题,没有多项式复杂度的解法(只能暴搜),故我们只考虑2-sat问题。 2-sat问题就是每个变量只有两种取值(当做0和 ...
分类:
其他好文 时间:
2020-05-01 16:46:39
阅读次数:
67
介绍: 贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的是在某种意义上的局部最优解。 贪心算法不是对所有问题都能得到整体最优解,关键是贪心策略的选择,选择的贪心策略必须具备无后效性,即某个状态以前的过程不会影响以后的状态,只与 ...
分类:
编程语言 时间:
2020-04-30 21:41:07
阅读次数:
75