PAT第一轮刷题总结

2023-10-30 13:30
文章标签 总结 刷题 pat 第一轮

本文主要是介绍PAT第一轮刷题总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 2018年1月2日~2018年1月29日


前排感谢晴神大大,以及众多大佬的帮助,让我这个编程小白走上了coding的不归之路。。

本来有望早一天登顶,还是由于自己的小惰性迟到了一天,也算提前完成自己一月份的计划。最后一天解决了之前遗留4道题的小bug,虽然效率及其低下,还是最终完成了,不然强迫症会犯的~~

由于之前在准备考研,并没系统的刷过题,零零星星刷的题目不超过十道,自己的编程能力约等于零,虽然一直想从事计算机相关工作,但自己之前并没有着重提高自己的代码能力。初试过后,回家浪了一星期,元旦回到学校。自己也有了大量的空闲时间来刷PAT,一方面为复试做准备,另一方面也确确实实该加强一下自己的编程能力。

晴神宝典确实具有极佳的口碑,干货十足,其中也不乏晴神卖萌的痕迹~~自己从宝典第三章到最后一章节,从讲解到实战指南,上边的代码几乎均实现了一遍,虽然还有一部分的章节自己还不是特别熟练,但我始终相信重复就是王道,只有静心练习,总会有所提高的!

从2号到29日,基本上保证每天6小时左右到编程时间(上下午各三小时),从入门篇到强化篇,到最后几天做往届PAT真题,绝大部分都是自己独立思考下完成,一些题目的测试点通不过的参考晴神宝典或者一些博客的题解。能感觉到自己在一点一滴的进步,一致最后几套真题卡着时间做基本上2个半小时能完成90+的分数。虽然并不是十分完美,但按自己的水平来看也在可接受范围之内,希望能在下一轮刷题的过程中加快速度和准确率。确实达到满分还需要一些运气,更需要一定的实力,各类数据结构算法的套路要更加熟练,要把打字编码速度加快,所使用的算法能加优化,审题也显得尤为重要,有时往往一个细节的疏漏都会导致debug很长一段时间。

本月剩下的两天准备回顾一下这段时间所学的知识,思考未来的路,制定一下2月份的计划。在下一轮的刷题中也会陆续更新PAT题解,学习更加高效的编码技巧,将各种语法运用熟练。自身并不是天赋异禀,但我更相信天道酬勤。

(PS:等成绩的过程是真心漫长。。。。。。)

以下是自己的学习记录:

PAT第四章

难题队列

A1075A1080A1095B1033A1033A1089


4.1排序(15日)

A107525)第五个测试点通不过22

A108030)第4个测试点通不过26

A1095  需要使用map的用法;将hh:mm:ss转换为秒的形式便于操作(学完6.4节后再做)


4.2散列(16日)

A1084 注意空格键也要进行判断;

B1033 20)第3测试点通不过 19


4.3递归(16日)

全排列问题

N皇后问题(递归暴力法,回溯法)


4.4贪心(17日)

PATA1033 加油站问题(没思路)

PATA103725)优惠卷问题//=测试点3显示运行超时,测试点6可以通过;不加=测试点3可以通过,测试点6显示答案错误 22

PATA1067 (25)34测试点超时。得19(寻找首个不相等的值每次都是从头开始找导致超时)

PATA1038(30)学习完6.3string 用法后再做


4.5二分(18日)

PATA1010 long long inf=((long long) 1<<63-1);」注意括号问题;未知进制数转化为long long时要判断是否溢出


4.6 two pointer18日)

PATA1089 将三类数组均置于全局;引入比较函数(bool型),输出函数(void型);判断是否插入排序;归并排序使用非递归方法;


4.7其他高效技巧与算法(18日)

打表、递推、随机选择算法

PATA1093PATA1101添加辅助数组


PAT第五章

难题队列

PATB1003PATA1049


5.1简单数学(18日)

PATB1003 (再做)使用数学方法找规律完成

PATA1104   浮点数与整数相乘浮点数应放在前边(ans+=v*(n-i+1)*i)(vdouble型,v放在前边)(若为(n+1-i)*i*v.    则第23测试点答案错误)

PATA1049  能不开数组尽量不开数组,开数组的话把边界情况考虑到


5.2最大公约数与最小公倍数(19日)


5.3分数的四则运算(19日)

注意分数的乘除法int型会导致溢出

头文件要加#include <algorithm>   using namespace std;


5.4素数(19日)

PATA1078 二次探测法每次冲突都从头开始,并不是接着上一次探测的结果。


5.5质因子分解(110日)

PATA1096 注意大质数时的输出情况。


5.6大整数运算(110日)

熟记大整数的加减乘除运算,将字符串转化为大整数,输出函数

PATA1024  将大整数范围开得大一些d[1000]



PAT第六章

难题队列

PATA1022


6.1vector的常见用法详解(111日)

PATA1039 出现众多名字时,与查询相关时使用hash表示字符串,使用vector表示

PATA1047 如果排序时直接对字符串排序,那么会导致大量的字符串移动,应采用字符串下标来代替字符串本身进行排序。


6.2set的常见用法详解111日)

Set最主要的作用是自动去重并按升序排序

Set只能通过迭代器(iterator)访问;insert();find();erase();size();clear();


6.3string的常见用法详解111日)

区分cstringstring

c_str()将string类型转化为字符数组


6.4map的常见用法详解(111日)

Map主要用途:建立字符串与整数之间映射;判断大整数或其他类型数据是否存在;字符串与字符串之间的映射

find();erase();size();clear()

PATA1022 数字图书馆,熟练掌握stl的语法


6.5queue的常见用法详解(112日)

q.push();q.front();q.back();q.pop();q.empty();q.size();


6.6priority_queue的常见用法详解(112日)

priority_queue <typename> name;

name.top()访问队首元素;name.push();name.pop();name.empty();name.size();

优先级设置

使用top()函数前,必须用empty()判断优先级队列是否为空,否则可能会因为队空而出现错误;


6.7stack的常见用法详解(112日)

st.push(); st.top(); st.pop(); st.empty(); st.size(); 

Stack用来模拟一些递归;


6.8pair的常见用法详解(112日)

#include <utility> 可以使用map的头文件代替<utility>

Pair的常见用途:用来代替二元结构体及其构造函数,可以节省编码时间;作为map的键值对来进行插入


6.9algorithm的常见用法详解(112日)

max();min();abs();

swap();reverse();

next_permutation();给出序列在全排列的下一个序列;

fill();可以把数组或容器中的某一段区间赋为某一个相同的值;

sort();

lower_bound(first, last,val);寻找在数组或容器的[first,last)范围内第一个值大于等于val的元素的位置;

upper_bound(first, last,val);寻找在数组或容器的[first,last)范围内第一个值大于val的元素的位置


PAT第七章

难题队列


7.1栈的应用(112日)

PATA1051 poptop操作前面要判空;


7.2队列的应用(112日)

PATA1056 用队列存储比赛序号,没有必要存储整个结构体


7.3链表处理(113-114日)

PATA1032   不使用flag标记,测试点4答案错误。。。本题可以使用flag进行标记,两次遍历即可完成。

PATA1052.  要将无效结点排除

PATA1097   注意结点均为有效的情况,remove序列个数为0


PAT第八章


8.1DFS114日)

PATA1103  注意超时问题


8.2BFS114日)

队列中存放的元素最好不要是元素本身,而是它们的编号(下标)

PATA1091 注意T的作用


PAT第九章

难题队列


9.2二叉树的遍历(115日)

熟练写模版


9.3树的遍历(115日)

前五题均1A


9.4二叉查找树(116日)

三题均1A


9.5平衡二叉树(116日)

熟记模板


9.6并查集(117日)

1A


9.7堆(117日)


9.8哈夫曼树(117日)


PAT第十章

难题队列

A1018


10.1图的定义和相关术语(117日)


10.2图的存储(117日)


10.3图的遍历(117日)


10.4最短路径(119日)

dijkstra

Bellman-Ford

SPFA

A1018 审题,在运输过程中都要调整每经过的车站


PAT第十一章


动态规划(121-122日)


PAT第十三章


13.1分块思想(122日)


13.2树状数组(122日)

统计序列中在元素左边比该元素小的个数。


13.3快乐模拟(123日)

A1017 23分,最后一个测试点通不过


1月24日-1月28日 完成1108~1139题目。





这篇关于PAT第一轮刷题总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/308231

相关文章

关于C++中的虚拟继承的一些总结(虚拟继承,覆盖,派生,隐藏)

1.为什么要引入虚拟继承 虚拟继承是多重继承中特有的概念。虚拟基类是为解决多重继承而出现的。如:类D继承自类B1、B2,而类B1、B2都继承自类A,因此在类D中两次出现类A中的变量和函数。为了节省内存空间,可以将B1、B2对A的继承定义为虚拟继承,而A就成了虚拟基类。实现的代码如下: class A class B1:public virtual A; class B2:pu

十五.各设计模式总结与对比

1.各设计模式总结与对比 1.1.课程目标 1、 简要分析GoF 23种设计模式和设计原则,做整体认知。 2、 剖析Spirng的编程思想,启发思维,为之后深入学习Spring做铺垫。 3、 了解各设计模式之间的关联,解决设计模式混淆的问题。 1.2.内容定位 1、 掌握设计模式的"道" ,而不只是"术" 2、 道可道非常道,滴水石穿非一日之功,做好长期修炼的准备。 3、 不要为了

人工智能机器学习算法总结神经网络算法(前向及反向传播)

1.定义,意义和优缺点 定义: 神经网络算法是一种模仿人类大脑神经元之间连接方式的机器学习算法。通过多层神经元的组合和激活函数的非线性转换,神经网络能够学习数据的特征和模式,实现对复杂数据的建模和预测。(我们可以借助人类的神经元模型来更好的帮助我们理解该算法的本质,不过这里需要说明的是,虽然名字是神经网络,并且结构等等也是借鉴了神经网络,但其原型以及算法本质上还和生物层面的神经网络运行原理存在

Java注解详细总结

什么是注解?         Java注解是代码中的特殊标记,比如@Override、@Test等,作用是:让其他程序根据注解信息决定怎么执行该程序。         注解不光可以用在方法上,还可以用在类上、变量上、构造器上等位置。 自定义注解  现在我们自定义一个MyTest注解 public @interface MyTest{String aaa();boolean bbb()

tensorboard-----summary用法总结

Tensorflow学习笔记——Summary用法         最近在研究tensorflow自带的例程speech_command,顺便学习tensorflow的一些基本用法。 其中tensorboard 作为一款可视化神器,可以说是学习tensorflow时模型训练以及参数可视化的法宝。 而在训练过程中,主要用到了tf.summary()的各类方法,能够保存训练过程以及参数分布图并在

PAT-1039 到底买不买(20)(字符串的使用)

题目描述 小红想买些珠子做一串自己喜欢的珠串。卖珠子的摊主有很多串五颜六色的珠串,但是不肯把任何一串拆散了卖。于是小红要你帮忙判断一下,某串珠子里是否包含了全部自己想要的珠子?如果是,那么告诉她有多少多余的珠子;如果不是,那么告诉她缺了多少珠子。为方便起见,我们用[0-9]、[a-z]、[A-Z]范围内的字符来表示颜色。例如,YrR8RrY是小红想做的珠串;那么ppRYYGrrYBR2258可以

PAT-1028

题目描述 某城镇进行人口普查,得到了全体居民的生日。现请你写个程序,找出镇上最年长和最年轻的人。这里确保每个输入的日期都是合法的,但不一定是合理的——假设已知镇上没有超过200岁的老人,而今天是2014年9月6日,所以超过200岁的生日和未出生的生日都是不合理的,应该被过滤掉。 输入描述: 输入在第一行给出正整数N,取值在(0, 105];随后N行,每行给出1个人的姓名(由不超过5个

七种排序方式总结

/*2018.01.23*A:YUAN*T:其中排序算法:冒泡排序,简单排序,直接插入排序,希尔排序,堆排序,归并排序,快速排序*/#include <stdio.h>#include <math.h>#include <malloc.h>#define MAXSIZE 10000#define FALSE 0#define TRUE 1typedef struct {i

Java实现MD5加密总结

Java实现MD5加密总结 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿! 1. 什么是MD5加密 MD5是一种常用的哈希算法,用于将任意长度的数据通过哈希运算转换为固定长度的数据串,通常为128位的二进制串,常用于对密码等敏感信息进行加密存储或传输。 2. Java实现MD5加密的方法 2.1 使用java.sec

Linux通配符总结

Linux通配符总结 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿! 在Linux系统中,通配符是一种用于匹配文件名或路径名的特殊字符。通过使用通配符,可以方便地匹配多个文件或目录,从而进行文件操作或查找。 2. 常用的通配符 在Linux系统中,常用的通配符包括以下几种: *:匹配任意长度的任意字符。?:匹配任意单个字符