05 2024 档案
摘要:[JLOI2009] 二叉树问题 题目描述 如下图所示的一棵二叉树的深度、宽度及结点间距离分别为: 深度:$4$ 宽度:$4$ 结点 8 和 6 之间的距离:$8$ 结点 7 和 6 之间的距离:$3$ 其中宽度表示二叉树上同一层最多的结点个数,节点 $u, v$ 之间的距离表示从 $u$ 到 $v
阅读全文
摘要:洛谷P1087 递归建立树,根据当前树的类型,选择“F”“B”“I” void build(int depth, int start, int end, int root){ if (depth >= n+1) return; int current = root; int flag = check
阅读全文
摘要:洛谷P1030 输入中序先序序列,输出后序 l1-l2为当前中序遍历序列 l3-l4为当前后序遍历序列 #include<bits/stdc++.h> using namespace std; string a, b; struct node{ char self; int left, right;
阅读全文
摘要:洛谷P1229 计算有多少个节点只有一个子节点。输出pow(2, n) #include<bits/stdc++.h> using namespace std; int main() { string a, b; int ans = 0; cin >> a >> b; int l = a.size(
阅读全文
摘要:洛谷P1364 #include<bits/stdc++.h> using namespace std; struct node{ int value, left, right, p; node(int v, int l, int r): left(l), right(r), value(v){}
阅读全文
摘要:洛谷P5076 #include<bits/stdc++.h> using namespace std; int n, root, cnt, opt, x; struct node{ int value, left, right, size, num; node(int l, int r, int
阅读全文
摘要:洛谷P1827 输入中序先序序列,输出后序 l1-l2为当前中序遍历序列 l3-l4为当前先序遍历序列 #include<bits/stdc++.h> using namespace std; string a, b; void build(int l1, int l2, int l3, int l
阅读全文
摘要:高精度 洛谷P2437 蜜蜂路线 这题是一道简单的求斐波那契数列题,但由于题目所给数字比较大,所以需要用到高精度。 主要代码 void fun() { for(int i = 0; i <= length; i++) { re[now][i] = re[now-1][i] + re[now-2][i
阅读全文
摘要:这个题思路和洛谷P2440有点像,建议先看P2440这个题,较简单。 二分答案 题目详见洛谷P3853路标设置 思路 建议先看这里,我的另一个博客 这里先贴段代码 bool check(long long length) { int num = 0; int now = 0; for(int i =
阅读全文
摘要:广度优先搜索 洛谷P2895 可先看我的另一个博客 我们不需要根据时间来模拟,而是可以记录每个点的最早被影响时间,随后再进行搜索 这里写几个坑点: 初始化time数组为-1,不能为0,因为可能陨石在0时刻就降落 陨石先出现,影响了五个点,这五个点可能会被后面的陨石影响 比如,先输入1,1,5 ,(1
阅读全文
摘要:深度优先搜索 洛谷P1605 可先看我的另一个博客 题目简单直接附代码了 #include<bits/stdc++.h> using namespace std; int n, m, t; int x_0, y_0, xfinal, yfinal, ans = 0, flag[10][10] = {
阅读全文
摘要:洛谷 P4387 验证栈序列 AC代码 #include<bits/stdc++.h> using namespace std; int main() { int q; cin >> q; for (int i = 0; i < q; i++) { int n, x; cin >> n; stack
阅读全文
摘要:二分答案 题目详见洛谷P2440木材加工 分享一下自己新学习的二分答案的方法,开始可能有点奇怪为啥这样能做,但其实思路很简单。 起始思路 题目要求我们求最大的分解长度,所以我(们)最开始想的肯定是从大到小(求最大值)枚举答案,看看是否满足,满足不了就加1。 但这样暴力肯定是会超时的,那我们枚举答案的
阅读全文
摘要:深度优先搜索 洛谷P1219 这是一道经典的深度优先搜索问题,深度优先搜索可用以下模板: void dfs(int depth){ if(达到边界){ 记录解 } for(枚举在depth这一深度,能够使用的解){ if(解可行){ 记录解(记录已经被使用) dfs(depth+1) 恢复解(恢复原
阅读全文
摘要:广度优先搜索 洛谷P1443 这里先介绍一下广度优先搜索: 广度优先搜索就是先将第一步可能的步骤全部记录,遍历过后,再将由第一步到达的第二步全部记录并遍历,直到最后全部遍历。 而此题要求我们求得最少步数,广度优先就能够达到最少步数的要求,因为广度优先是先通过搜索所有可能的第n步才进行第n+1步 这里
阅读全文