题目: 解答: DFS深度搜索思路,数值>255非法,以零开头长度大于等于2非法;不同于常规回溯思路,同层只用最多遍历3个数字,依次查看是否满足数值要求;各段的数值状态也是分段存储的,互不干涉,使用vector<string> path来存储; 1 private: 2 vector<string> ...
分类:
其他好文 时间:
2020-05-04 13:13:26
阅读次数:
63
//网络流s const int INF = 0x3f3f3f3f, maxn = 210; struct E { int u, v, flow; E(int u = 0, int v = 0, int flow = 0): u(u), v(v), flow(flow) {} } edg[maxn ...
分类:
其他好文 时间:
2020-05-04 00:40:18
阅读次数:
49
这道题就是给出字符串,字符串中的每一个字符代表一个数字,字符和数字是一一对应的,且保证不同的字符最多有十种,问给出的字符串是否存在映射使加法成立。描述的可能不是很清楚,详见原题 "LeetCode 1307 口算难题" 。这道题是dfs+剪枝,纯暴力时间开销很大,我的想法是从每个字符串的最低位依次枚 ...
分类:
其他好文 时间:
2020-05-03 23:07:03
阅读次数:
140
这题主要问题是有些地方有钥匙,这种类型我们之前在bfs种做到过,就是用状压dp多枚举一维钥匙就行了,因为钥匙不需要时间,所以每次走到取完钥匙肯定是最优的 本题是二维的,不过转成一维更方便。我们的dis数组原先记录的是点,现在记录的是点和状态。建图是,先建门,将门与墙都插入一个set便于查询 建完这两 ...
1 graph = { 2 'A':['B','C'], 3 'B':['A','C','D'], 4 'C':['A','B','D','E'], 5 'D':['B','C','E','F'], 6 'E':['C','D'], 7 'F':['D ...
分类:
其他好文 时间:
2020-05-03 18:19:06
阅读次数:
48
题目: 解答: 方法:深度优先搜索 思路和算法: 首先,让我们找出给定的两个树的叶值序列。之后,我们可以比较它们,看看它们是否相等。 要找出树的叶值序列,我们可以使用深度优先搜索。如果结点是叶子,那么 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