PAT-甲级刷题笔记和总结
本帖主要记录一些自己在刷题过程中的一些笔记,包括:
1、常用的函数
2、STL中常用方法
3、常见错误
4、其他常用方法
5、刷题过程中的常见算法:https://www.cnblogs.com/Mered1th/category/1403573.html
一、常用函数
头文件 #include<cctype>
isalpha 字母(包括大写小写)
islower (小写字母)
isupper (大写字母)
isalnum(字母大写小写+数字)
isblank(space和\t)
isspace(space、\t、\r、\n)
char t=tolower(c)将字符转换为小写字符赋值给t
头文件 #include<stdlib.h>
绝对值函数 abs()
substr()函数:作用是截取某个字符串中的子串
string s; getline(cin,s);//输入 ) //表示从下标4开始一直到结束 ,) //表示从下标5开始,3个字符
如果是char s[len], 输入要改为cin.getline(s,len)
string s; getline(cin,s); ]; cin.getline(str,);
strcmp()函数:字符串比较函数,注意返回值
strcmp(str1,str2);
若str1=str2,则返回零; 若str1<str2,则返回负数; 若str1>str2,则返回正数。
这个大部分情况下可用String代替。
取整函数:
向上取整直接可用+0.5
ceil(x)返回不小于x的最小整数值(然后转换为double型)。
floor(x)返回不大于x的最大整数值。
round(x)返回x的四舍五入整数值。
find和count的区别
count函数的功能是:统计容器中等于value元素的个数。先看一下函数的参数:
count(first,last,value);
first是容器的首迭代器,last是容器的末迭代器,value是询问的元素。
如果有返回1,无则返回0。返回值只能是1或0
而find()函数是返回其元素的位置(迭代器)
sprintf、sscanf用法
//sscanf的作用:把字符数组str中的内容以"%d"的格式写到n中 sscanf(str,"%d",&n); //sprintf的作用:把n以"%d"的格式写到str字符数组中 sprintf(str,") //str必须为数组名,不能是string类
stoi、stod函数(仅C++11支持):
//作用:分别将字符串转换为int或double型
//to_string函数:
); //将123转换为字符串
//c_str()函数:返回字符串首字符地址
//string类s1输出时可以printf("%s",s1.c_str());
二、STL中常用方法
vector初始化:
vector<)//容量为n,初始值为1
vector容器的去重unique函数:
利用unique函数,unique()作用是将不重复的元素往前移(将重复元素往后移动),返回值是重复元素的第一个位置。
先排序,去重配合erase函数。
ans.erase(unique(ans.begin,ans.end),ans.end) //用unique前先排序
vector的erase与insert要用迭代器,string的erase和insert无须迭代器。
s.insert(0,4-s.length(),'0'); 在0的位置插入4-s.length()个'0'
s.find返回的是下标的值,如果没有,用 “==string::npos”
lower_bound(first,last,val); //第一个值大于等于val的元素的位置 ,-); //第一个值大于val的元素的位置
函数返回的是位置! 如果要变成下标需要在后面减起始地址a
三、常见错误
常见错误:
1、段错误:大部分是因越界、非法访存引起的
2、浮点错误:除数或余数为0
3、注意输出的格式和单复数。
四、其他
C++构造函数写法
class Complex{
double real, imag;
Complex(); //第二个参数的默认值为0
};
Complex::Complex(double r,double i){
real = r;
imag = i;
}
实例:结构体Point用于存放平面点的坐标x,y
struct Point{
int x,y;
Point(){};
Point(int _x,int _y){
x=_x;
y=_y;
}
};
结构体内重载小于号 A1129 Recommendation System
struct node {
int value, cnt;
bool operator < (const node &a) const {
if (cnt != a.cnt){
return cnt > a.cnt;
}
else return value < a.value;
}
};//将node按照cnt排序,如果cnt相等就按value排序
完全二叉树的静态存储:
起始编号为0:index*2+1, index*2+2
起始编号为1,index*2,index*2+1
bool cmp(node a,node b){
if(a.flag==false||b.flag==false){
return a.flag>b.flag; //这样无效节点会排在后面
}
else return a.value<b.value;
}
字符串hash映射:

.png)
3、有数字,增加进制数。举例:

PAT-甲级刷题笔记和总结的更多相关文章
- 《Data Structures and Algorithm Analysis in C》学习与刷题笔记
<Data Structures and Algorithm Analysis in C>学习与刷题笔记 为什么要学习DSAAC? 某个月黑风高的夜晚,下班的我走在黯淡无光.冷清无人的冲之 ...
- Python 刷题笔记
Python 刷题笔记 本文记录了我在使用python刷题的时候遇到的知识点. 目录 Python 刷题笔记 选择.填空题 基本输入输出 sys.stdin 与input 运行脚本时传入参数 Pyth ...
- PTA刷题笔记
PTA刷题记录 仓库地址: https://github.com/Haorical/Code/tree/master/PTA/GPLT 两周之内刷完GPLT L2和L3的题,持续更新,包括AK代码,坑 ...
- PAT甲级 排序题_C++题解
排序题 PAT (Advanced Level) Practice 排序题 目录 <算法笔记> 6.9.6 sort()用法 <算法笔记> 4.1 排序题步骤 1012 The ...
- 《剑指offer》刷题笔记
简介 此笔记为我在 leetcode 上的<剑指offer>专题刷题时的笔记整理. 在刷题时我尝试了 leetcode 上热门题解中的多种方法,这些不同方法的实现都列在了笔记中. leet ...
- 18.9.10 LeetCode刷题笔记
本人算法还是比较菜的,因此大部分在刷基础题,高手勿喷 选择Python进行刷题,因为坑少,所以不太想用CPP: 1.买股票的最佳时期2 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. ...
- LeetCode刷题笔记和想法(C++)
主要用于记录在LeetCode刷题的过程中学习到的一些思想和自己的想法,希望通过leetcode提升自己的编程素养 :p 高效leetcode刷题小诀窍(这只是目前对我自己而言的小方法,之后会根据自己 ...
- LeetCode刷题笔记 - 12. 整数转罗马数字
学好算法很重要,然后要学好算法,大量的练习是必不可少的,LeetCode是我经常去的一个刷题网站,上面的题目非常详细,各个标签的题目都有,可以整体练习,本公众号后续会带大家做一做上面的算法题. 官方链 ...
- 1080 Graduate Admission——PAT甲级真题
1080 Graduate Admission--PAT甲级练习题 It is said that in 2013, there were about 100 graduate schools rea ...
随机推荐
- 1017 A除以B
本题要求计算 A/B,其中 A 是不超过 1000 位的正整数,B 是 1 位正整数.你需要输出商数 Q 和余数 R,使得 A=B×Q+R 成立. 输入格式: 输入在一行中依次给出 A 和 B,中间以 ...
- MyEclipse移动开发教程:设置所需配置的iOS应用(二)
MyEclipse个人授权 折扣低至冰点!立即开抢>> [MyEclipse最新版下载] 二.创建一个数字证书和私钥 2.2 生成证书签名请求和私钥文件 第一步是使用数字签名实用程序创建证 ...
- dubbo集群应用
前面写了一篇dubbo的基础应用篇,单机版 http://www.cnblogs.com/yun965861480/p/6257670.html, 这次将集群的相关配置记录下来. 1.zookeepe ...
- SharePoint Word Service-PowerShell
1. 配置转换进程 Set-SPWordConversionServiceApplication –Identity "Word Automation Services" –Act ...
- JAVA中int转string及String.valueOf()的使用
日常java开放中,经常会遇到int和String的互转,一般图省事的做法就是: String length = ""+100; length的生成需要使用两个临时字符串" ...
- xml与json
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式. JSON现在基本上作为前后端数据交互的重要载体,在JSON之前,前后端主要的传输方式主要是通过XML或者文 ...
- jQuery 禁用select和取消禁用之disabled
jQuery1.5及以前: 禁用select: $('#groupId').attr('disabled','disabled'); 取消禁用: $('#groupId').removeAttr('d ...
- Bootstrap CustomBox 弹层
这个模态窗口插件使用原生javascript制作,它也可以和jQuery完美的结合.请注意:这些模态窗口动画仅仅工作在支持各自CSS3属性的浏览器上.Internet Explorer 8 和 9需要 ...
- pyqt5:图片自适应QLabel大小和图片移除
参考链接: https://www.e-learn.cn/content/qita/669569 图片自适应QLabel大小 # coding=utf- import sys from PyQt5.Q ...
- grafana dashboard的导入导出
grafana的官方提供了很多社区或者官方设置的漂亮的dashboard,地址如下: 点击打开链接 导入图表大大节省了我们配置监控的时间,非常方便. 以linux host overview为例,首先 ...