文章目录
- 数据结构
- 1.栈
- 1.1 单调栈
- 1.2括号匹配问题
- 2.树形结构
- 2.1二叉树
- 2.1.1树形DP
- 3.动态规划
- 3.1 背包
- 3.2 LIS
- ERROR
- heap-buffer-overflow
数据结构
1.栈
1.1 单调栈
单调栈内的元素具有单调性质,要么单调递增,要么单调递减。
1.2括号匹配问题
921.使括号最少地添加
921思路:())必须添加左括号,相当于进行一次清算,(()需补上一个)。
22. 括号生成
22思路:用dfs去生成括号序列,dfs内有三个参数,left,right,s,分别表示为待分配的左括号、待分配的右括号和当前状态下形成的串串。
90. 子集 II
90思路:先排序再dfs生成,然后再进行去重(或者去重在生成的时候就可以进行处理)。
2.树形结构
2.1二叉树
2.1.1树形DP
树形DP|124.二叉树中的最大路径和
3.动态规划
3.1 背包
华为机试|HJ16 购物单
分组背包与普通背包的差别——循环上要有所注意
for(int V=N;V>=0;V--){//先体积,体积从小到大是为了避免出现累加,若题目要求物品只能选出一个的话
for(int j=0;j<new_groups[i].size();j++){//同时处理一类物品,保证同一个时间只有一个物品有效
auto [cost_0,val_0] = new_groups[i][j];
if(V>=cost_0) dp[V] = max(dp[V],dp[V-cost_0]+val_0);
}
}
3.2 LIS
双向LIS:华为机试|HJ24 合唱队
ERROR
heap-buffer-overflow
报错信息提示存在heap-buffer-overflow的问题,这通常是由于数组或向量访问越界造成的。