
PAT A 模块总结
MaxLeo928
随缘记录
展开
-
PAT A 备考实用小模块集合
1、素数素数判断函数和获取素数表的写法。(二者是独立的,选择使用)bool is_prime(int x){ //素数判断 if(x==0||x=1) return false; int k=(int)sqrt(x*1.0); for(int i=2;i<=K;i++){ if(x%i==0) return false; } return true;} //素数筛(埃氏筛法) int P[MaxN]={0};//0代表为素数,1代表为负数 vector<in原创 2021-09-09 21:57:26 · 327 阅读 · 0 评论 -
PAT A 主要数据结构知识点实用模块模板
目录1、二叉树2、并查集3、贪心算法4、最短路径5、拓扑排序6、关键路径还有Hash、DFS、BFS(考察不多,使用队列) 还是更多应结合题目练习使用,考察比较灵活整理总结不易,希望大家顺手给个赞和关注,谢谢大家!!!附上常用的小模块集合常用STL容器总结(待更新)...原创 2021-09-10 12:09:10 · 256 阅读 · 0 评论 -
PAT备考之 关键路径 专题
虽然到目前为止,关键路径没有考过,但是近年之前没考过的拓扑排序和Floyd算法都有考,故稍微了解准备一下关键路径。在关键路径之前,有个最长路径的求法,在没有正环的图中,边权全部取相反数,使用Bellman-Ford算法即可。而对于关键路径问题(有向无环图),除了动态规划的解法,比较常规的是使用拓扑排序。具体过程:在拓扑排序的基础之上,进行一次正向拓扑和一次逆向拓扑,用ve[]数组和vl[]数组来更新每个事件最早和最晚的时间。我还是按照自己习惯使用结构体数组和邻接矩阵记录点与点,还有边的情况。原创 2021-09-09 21:01:31 · 284 阅读 · 0 评论 -
PAT备考之 最短路径 专题
PAT A中30分答题常考题1、Dijkstra算法+DFS(重点)(无负边权)单源最短路径问题万能通法,可以回溯路径,选取多条件最优路径以在最短路径前提下的最小花费问题为例(其余条件根据题目变通)在主函数中直接 Dijkstra(start); DFS(end);即可,path记录的就是有约束下的最短路径int G[maxN][maxN]; //记录两点间距离 int C[maxN][maxN]; //记录两点间花费 int start; //记录起点 int d[ma..原创 2021-09-09 17:10:56 · 235 阅读 · 0 评论 -
PAT备考之 拓扑排序 专题
拓扑排序可以用于1、有前提条件的事件是否可以进行的判断2、有向无环图的判断下面是我自己比较习惯的写法。(TIP:如果题目条件中有说,当有多个事件可以进行时,优先进行序号小的,那么就可以把queue<int> q 换为priority_queque<int> q,即可直接实现)//顶点数为Nstruct node{ int inD; vector<int> next;}Node[N];//在主函数中存储好结点间关系bool tpsort()原创 2021-09-09 15:31:14 · 198 阅读 · 0 评论 -
PAT备考之 贪心算法 专题
贪心主要有两种问题,分为简单贪心和区间贪心1、简单贪心 比较好理解和思考;例如已有些单个数字怎样组合最大;出售固定量商品,怎样组合最赚钱。2、区间贪心(1)在一个大的区间内,尽量放入给出的小区间,要求两两不相交,一般求能放入多少个区间,ans即为放入区间数。struct inteval{ int x,y;};bool cmp(const inteval a,const inteval b){ if(a.y!=b.y) return a.y>b.y; ret...原创 2021-09-09 15:14:14 · 283 阅读 · 0 评论 -
PAT备考之 并查集 专题
对于并查集,记住三个模块即可看到并查集题目,直接二话不说,按顺序三个模块一写,直接用。1、father[N]数组int father[N];数值初始化://写在main函数里for(int i=0;i<n;i++){ father[i]=i;}2、findfather(x)函数(带路径压缩,可以缩短查找时间)int findfather(int x){ if(father[x]==x){ return x; }else{ int F=findfath原创 2021-09-09 12:35:46 · 173 阅读 · 0 评论 -
PAT备考之 二叉树 专题
二叉树的考题能不建树就不建树,建树也用静态比较简单1、序列转换 作为核心考点树里的核心,需要非常熟练理解掌握树序列的转化(不建树)。做题时有一个思想是,有了包含中序的两个序列,树就有了,其余问题都可在序列上进行。 理解是关键,不要死记硬背。vector<int> pre,in,post,le[N] (记录前序、中序、后序、层序)(1)已知前序中序(pre(N),in(N)),转后序(记录层序)void trail(int r...原创 2021-09-09 12:15:33 · 244 阅读 · 0 评论