- 博客(10)
- 收藏
- 关注
原创 美国血统 American Heritage 和 求先序排列
前序遍历的前某部分一定是属于左子树的,后一部分一定是属于右子树的。后序遍历的前某部分一定是属于左子树,后一部分一定税属于右子树的。前序遍历的第一个是根节点,后序遍历的最后一个是根节点。由根节点便可通过中序遍历将序列分为左子树和右子树。知道中序遍历和前序遍历求后序遍历。知道中序遍历和后续遍历求前序遍历。两道题的关键点: 根节点。
2025-09-12 12:07:32
246
2
原创 P1182数列分段 Section II 和 P1281[CERC1998] 书的复制
【代码】P1182数列分段 Section II 和 P1281[CERC1998] 书的复制。
2025-08-16 21:39:37
266
原创 贪心的两道简单题的想法
这样使得前一段时间和后一段时间的时间间隔更小,当第一次选择结束后,第二次剩余的时间段之间的间隔会相对更大,重叠的可能性更小,使得总的选择次数减少。结束时间点:2 和 3 ,当这两个时间点的开始时间满足条件时,2比3预留给后面活动的时间多一个小时,使得排更多活动的可能性变大。根据开始时间排序,开始时间越小越排在前面。根据结束时间排序,结束时间越小越排前面。
2025-04-14 13:05:31
211
原创 P1806 跑步
P1806 跑步 - 洛谷创建long long dp[n][m]二维数组,其值代表跑n圈,以m圈为结束圈数的总方案数。状态转移方程:dp[i][j]+=dp[i-j][k],第一维(i 和 i-j)代表跑的总圈数,第二维(j 和 k)代表最后跑的圈数。在确定了跑i圈的最后一圈为j之后,我们只需枚举总圈数跑i-j(跑j圈之前我们跑的总圈数)圈时,最后一圈跑小于j的k值(k<j保证了后面一圈跑得圈数比前一圈跑得圈数大).至于为什么得初始化dp[i][i]=1(dp[i][i]代表一次性跑完,题中不包括
2025-03-16 13:18:31
367
1
原创 B3637 最长上升子序列
B3637 最长上升子序列 - 洛谷输入样例: 6 1 2 4 1 3 4输出:4在脑中模拟挑选过程,我们会发现判断一个数能否加入已有的上升序列,我们关注的永远是它是否比序列最后一个数大,我们由此得到思路以每个数作为序列的最后一个数,得到以该数作为最后一个数的最长上升序列,最后从所有序列中得到最长上升子序列.#include<bits/stdc++.h>u
2025-03-16 09:37:15
518
原创 B3644 【模板】拓扑排序 / 家谱树
https://www.luogu.com.cn/problem/B3644?contestId=233473入度:入度是图论算法中重要的概念之一。它通常指有向图中某点作为图中边的终点的次数之和。 找到入度为0的点作为起点,然后删除与该点相连的所有边,下一个入度为0的点作为第二个点输出,重复操作直到走完所有点。 #include<bits/stdc++.h>using namespace std;vector<vector<int> >box(105);int mark[105];int n;vo
2025-03-06 09:38:42
445
原创 P8605 [蓝桥杯 2013 国 AC] 网络寻路 dfs
P8605 [蓝桥杯 2013 国 AC] 网络寻路 - 洛谷#include<bits/stdc++.h>using namespace std;int ans,cnt;vector<vector<int> >box(100005);int vis[100005];int mark;void dfs(int x){ if(cnt==4){ ans++; return ; }; for(auto u:box[x]){ if(
2025-03-06 09:21:12
384
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅