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题目。





  • 19
    点赞
  • 71
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值