Solutions for PAT
- 字符串
- 模拟 熟练string相关方法的使用
- 字符串与数字的相互准换 A1069 (sprintf()和sscanf()、c++ stringstream、c++11函数 stoi、to_string)
- 大小写转换 tolower(), toupper() A1071
- 模拟科学计数法 A1073
- 对比较复杂转换规则的模拟 数字转中文读法 A1082
- stringstream帮助分隔输入 A1100
- sscanf和sprintf的使用
- 思维 A1112
- 求公共前/后缀 A1077
-
- KMP
- 回文串Manacher
-
- 字典树
- 模拟 熟练string相关方法的使用
- 数学
- 大整数模拟(推荐用Java解决)
- 大整数加法
- A1136
- 大整数减法
- 大整数乘法
- 大整数除法
- 对整数运算溢出的处理 A1065
- 大整数加法
- 素数
- 素数筛
- 区间筛
- 最大公约数 gcd
- 最小公倍数
- 合数分解 A1051
- * 逆元
- 快速幂
- 矩阵快速幂
- 蔡勒公式 随便给一个日期,就能用这个公式推算出是星期几
- Lucas 定理 用来求C(n,m) mod p的值
- 找规律
- A1049 给一个数N,统计从1到N的所有数字中1出现的次数
- A1104
- 实现某种运算
- 模拟科学计数法 A1060
- 分数四则运算
- 分数加 A1081
- 分数四则运算 A1088 模板
- 大整数模拟(推荐用Java解决)
- 数据结构
- 线性表
- 链表模拟
- 逆转 A1074
- 合并 A1133
- 排序 A1052
- 增删改查 A1133 A1097
- A1032
- tips:根据pat考察的惯用格式,并不需要完全模拟实现链表,只需要在功能上模拟其作用即可,可以利用vector储存链表结点,然后直接对vector进行操作,最后按照链表格式输出处理后的vector即可
- * 使用指针模拟
- 链表模拟
- 栈
- 中缀转后缀表达式
- 后缀表达式运算
- 模拟栈,实现较高级应用 A1057
- 单调栈
- 队列
- 模拟排队
- A1056
- 堆
- 最大堆, 最小堆 实现,概念,性质
- A1147(注意边界)
- A1155
- 主要是下滤操作, 需要重点注意 percDown
- priority_queue
- heapsort A1098
- 最大堆, 最小堆 实现,概念,性质
- 集合set, unordered_set
- A1063
- 重构set中的"<"运算符,以达到自动排序效果 A1129
- A1134
- 哈希散列
- 平方探测法 A1078
- 平均搜索时间 A1145
- 线性表
- 图论
- 最短路问题
- Dijkstra 单源最短路 -[x] A1111
- Dijkstra+ 堆优化
- 单源最短路 bellman ford 算法 可以处理负边权图
- SPFA
- 多源最短路 Floyd Warshall 算法
- 判断拓扑排序 A1146
- 拓扑排序
- 欧拉通路、回路,哈密顿通路、回路
- 判断所给的点是否构成哈密顿图 A1122 概念
- 判断这个图是否含有欧拉路,欧拉回路 A1126 注意判断连通性
- 如果有0个或者2个点的度数为奇数,那么一定含有欧拉路。如果有0个点度数为奇数,那么一定含有欧拉回路
- 关键路径
- 树
- 遍历
- 先序遍历 递归、非递归实现
- 后序遍历
- 递归实现
- 非递归实现 可用于求树中一个结点的所有祖先
- 中序遍历 递归、非递归实现
- 给出先序中序求后序 A1138
- 给出后序中序求先序、层序 A1020
- 给出先序后序求可能的中序(重要)
- tips: 只要父亲节点只包含一个子节点,那么这个答案是不唯一的
- A1119
- 基础层序遍历
- Z字形遍历 挺重要的感觉 A1127
- 多叉树遍历
- A1079
- A1090
- A1094
- 遍历,同时记录结点重要信息 2019年春季考试 7-4 Structure of a Binary Tree(30分)
- LCA
- A1151
- A1143
- 根据最近公共祖先的概念判断的题,不考虑复杂LCA算法
- 表达式树 2019年秋季考试 7-3 Postfix Expression (25分)
- 给定一个表达式的二叉树形式,求中序表达式,并加括号 A1130
- 哈夫曼树
- 判断完全二叉树 A1123
- 遍历
- 平衡树
- 判断平衡性
- A1123
- 建立平衡树
- A1066
- 判断平衡性
- 并查集
- 基础模板
- A1118
- A1114
- A1107
- 2019年春季考试 7-3 Telefraud Detection (25分)
- 路径优化
- 基础模板
- 最短路问题
- 排序
- 插入排序 A1089, A1098
- 归并排序 A1089
- 快速排序
- A1101
- 堆排序 A1098
- 拓扑排序 基于入度的判断
- 判断拓扑排序 A1146
- 暴力
- 搜索
- DFS + 剪枝优化
- A1103
- A1131
- BFS
- A1076
- A1091
- 多源BFS
- Dijkstra+DFS
- A1087
- DFS + 剪枝优化
- 经典问题
- N皇后
- A1128
- 汉诺塔
- 装载问题
- 全排列
- N皇后
- 搜索
- 模拟题
- 模拟科学计数法 A1060
- A1061, A1062, A1075, A1080, A1095, A1105, A1109, A1141, A1148, A1153
- 贪心
- A1067
- A1070
- A1125
- 分治
- 二分查找系列
- 等于
- 大于、大于等于
- 小于、小于等于
- 相关stl
- binary_search
- lower_bound(num, num+size, x)-num:大于等于x的第一个数的下标
- upper_bound(num, num+size, x)-num:大于x的第一个数的下标
- A1085
- A1121
- 二分查找系列
- dp
- 背包问题
- 01背包+构造最优解 A1068
- 完全背包
- 多重背包
- LIS 最长递增子序列
- LCS 最长公共子序列LCS
- 整数拆分
- 背包问题
- STL
- string
- find
- 字符串结尾 string::npos
- vector
- List
- set
- map
- stack
- queue
- priority_queue 最大堆、最小堆
- algorithm
- max, max_element
- min, min_element
- lower_bound, lower_bound(begin,end,num,greater())
- upper_bound, upper_bound(begin,end,num,greater())
- binary_search
- sort, stable_sort
- fill
- swap
- reverse
- next_permutation
- numeric
- accumulate
- string
- C++11
- Lambda
- auto
- std::to_string
- stoi,stod,stof,stol,stold,stoll,stoul,stoull
- 优化
- IO优化