随笔分类 - PAT记录
个人PAT刷题记录
摘要:基本思想: 迪杰斯特拉得翻版,循环求各个节点,最后求最小结果; 关键点: 注意题目要求; #include<iostream> #include<vector> #include<string> #include<algorithm> using namespace std; const int m
阅读全文
摘要:基本思想: 附带路径代价的最短路径生成; 关键点: 无; #include<iostream> #include<fstream> #include<sstream> #include<vector> #include<string> #include<cstring> #include<algor
阅读全文
摘要:基本思路: 主要有两点: 1.多路径保存问题,主要是vector<int>,来保存每个节点的多个前驱节点; 2.对于逆序前驱数组,采用DFS,枚举每个分支,采用逆序访问进行根节点遍历; 关键点: 上述两个问题; #include<iostream> #include<fstream> #includ
阅读全文
摘要:基本思想: 主题思想是迪杰斯特拉算法,但是在其基础上做了相关的改进; 1.要求统计等长路径条数; 2.在等长路径的基础上,需要再次选择节点权值最大的哪个; 关键点: 路径保存pre,利用前驱节点保存; 等长路径统计用num[]; 权值统计用weight[]; 比较套路化的流程; 但是注意一点,等长路
阅读全文
摘要:基本思路: 典型的01背包问题; 关键点: 后续总结; #include<iostream> #include<stdlib.h> #include<stdio.h> #include<vector> #include<string> #include<math.h> #include<algori
阅读全文
摘要:基本思想: 后续总结,详见数据结构典型问题——动态规划篇; #include<iostream> #include<stdlib.h> #include<stdio.h> #include<vector> #include<string> #include<math.h> #include<algo
阅读全文
摘要:基本思想: 后续动态规划问题总结,但是注意一点的是,初始化一定要使dp[i]=1,因为每个元素都可以独立的构成一个子串; 如果不初始化会有问题; 6 7 4 5 如果不初始化会有dp数组; 1 2 0 1 实际应该是: 1 2 1 2 关键点: 无; #include<iostream> #incl
阅读全文
摘要:基本思想关键点详见 “数据结构典型问题” #include<iostream> #include<stdlib.h> #include<stdio.h> #include<vector> #include<string> #include<math.h> #include<algorithm> #i
阅读全文
摘要:基本思想: 感觉也不用贪心思想,直接打表就可以了; 关键点: 无; #include<iostream> #include<stdlib.h> #include<stdio.h> #include<vector> #include<string> #include<math.h> #include<
阅读全文
摘要:基本思想: 贪心问题的简单题,一般不用考虑启发式贪心,可以直接进行贪心求解; 关键点: 无; #include<iostream> #include<stdlib.h> #include<stdio.h> #include<vector> #include<string> #include<math
阅读全文
摘要:基本思想: 三维BFS遍历,注意可以XYZ变换数组进行快速遍历; 关键点: 注意访问的标志位问题; #include<iostream> #include<stdlib.h> #include<stdio.h> #include<vector> #include<string> #include<m
阅读全文
摘要:基本思想: 就是树形DFS遍历,没啥新意; 关键点: 最主要的是出现了一个问题,如果用for循环,在相同的剪枝条件和递归边界下,会遇到TLE和爆栈得风险; 后来和k神讨论,发现是for循环强行每次迭代枚举,多了很多不可能得情况; 例如如果第一位是6,后续每轮从6~0枚举,但是如果第一位变成5的话,后
阅读全文
摘要:基本思想: 利用栈进行压栈,重新调整顺序。单纯利用栈输出的话无法快捷预知后续的节点首地址,计算索引非常麻烦; 关键点: 注意无效节点的统计; #include<iostream> #include<stdlib.h> #include<stdio.h> #include<vector> #inclu
阅读全文
摘要:基本思想: 注意遍历方式; 关键点: 注意一下节点的前后地址输出问题; #include<iostream> #include<stdlib.h> #include<stdio.h> #include<vector> #include<string> #include<math.h> #includ
阅读全文
摘要:基本思想: 一直不知道模拟思想是个什么思想,后续需要补全一下; 本质上就是模拟栈的弹出压入问题,主体部分写出来了,但是忘了判断压栈过程中可能容量爆栈; 关键点: 模拟问题; #include<iostream> #include<stdlib.h> #include<stdio.h> #includ
阅读全文
摘要:基本思想: 注意一个新的点,对于map如果有排序去重的问题,完全可以map<string,set<int>>来解决,没必要用vector进行push; 关键点: 新的TLE问题点,对于大型复杂性数据结构,可以采用引用传入而不是值拷贝的形式,这个尤其要注意下; #include<iostream> #
阅读全文
摘要:基本思想: 无,简单的排序问题,注意pair排序的另解; 关键点: 无; #include<iostream> #include<stdlib.h> #include<stdio.h> #include<vector> #include<string> #include<math.h> #inclu
阅读全文
摘要:基本思想: 和进制思想类似,但是唯一不同的是,取余为0的时候个位忽略; 关键点: 普通枚举转换也可以,但是此次示例给的是打表方式; 当打表的时候可以直接枚举情况采用拼接字符串来进行快速运算,注意一下; #include<iostream> #include<stdlib.h> #include<st
阅读全文
摘要:基本思想: 主要是指数计算,通过去除先导零来进行情况枚举,注意一下; 关键点: 无; #include<iostream> #include<stdlib.h> #include<stdio.h> #include<vector> #include<string> #include<math.h>
阅读全文
摘要:基本思想: 自己的方法是直接用set记录,直接遍历两个一起添加得笨办法,但是示例代码中的值得学习; 关键点: 集合并集交集思想,可以直接记录第一个set得数目,直接遍历第二个; 如果在使用第一个set.find,找到相同元素,直接记录交集数目+1;找到不同元素,则交集元素+1; double cha
阅读全文

浙公网安备 33010602011771号