算法竞赛中小知识点总结(不断更新)

简介: 算法竞赛中小知识点总结(不断更新)
  1. int类型的大小:2*10^9
  2. Long long 类型:8个字节
  3. Double:1.7*10^308
  4. Menset()函数:初始化数组 使用时需要包含string.h头文件
    void *memset(void *str, int c, size_t n)
参数
• str -- 指向要填充的内存块。
• c -- 要被设置的值。该值以 int 形式传递,但是函数在填充内存块时是使用该值的无符号字符形式。
• n -- 要被设置为该值的字符数。
返回值
该值返回一个指向存储区 str 的指针。

动态二维数组的使用:

int *p= new int[row];//定义指针数组
for(int i=0;i<row;i++)
{
p[i]=new int[Column];
}
使用完释放内存:
for(int i=0;i<size;i++)
{
delete [] p[i]; // 要在指针前加[] , 否则的话 只释放p[i]所指的第一个单元所占的空间
}
delete [] p;
  1. 关于数num = abcde 则abc=num /100,cde = num % 100.即/:后面位数被舍去,%前面位数会被舍去.
  2. 三角形中,大边对大角.
  3. 求最大公约数的函数__gcd(a,b).需要包含algorithm头文件
 最大公倍数: a*b / 最大公约数
 辗转相除法求最大公约数:
 while(res ! = 0)
 {
 res = a % b;
 a = b;
 b = res;
 }
 最大公约数:a

swap(a,b)函数 在头文件iostream中.


STL提供了排列组合的函数next_permutation(first,last)函数:求后一个排列组合,每次调用数列增大,当为最大时,返回false.否则返回true.排列范围[first, last)

Prev_permutation(first,last):求前一个排列组合,当为第一个时,则返回false.否则返回true.


闰年的判断 满足下列情况之一时:


(1).年份是4的倍数,而不是100的倍数.

(2).年份是400的倍速.


Scanf()可以接收指定类型的数据,如scanf("%d/%d/%d",&year,&month,&day); 则输入的格式为2021/1/27.

C++ isalpha、isalnum、islower、isupper函数用法


1.isalpha
  isalpha()用来判断一个字符是否为字母,如果是字符则返回非零,否则返回零。
2.isalnum
  isalnum()用来判断一个字符是否为数字或者字母,也就是说判断一个字符是否属于a~z||A~Z||0~9。
3.islower
  islower()用来判断一个字符是否为小写字母,也就是是否属于a~z。
4.isupper
  isupper()和islower相反,用来判断一个字符是否为大写字母。
  以上几个函数使用时不用包含头文件


矩阵乘法:Amn , Bnk,当两个矩阵A和B可以相乘时,乘法次数:mnk

获取一个字符:getchar(),输入一个字符:putchar().需要包含C语言头文件stdio.h(如果需要C语言的输入输出也需要包含该函数

读取一行字符串:getline(cin,s) s表示string 类型的字符串.

cin.getline(s,size) s代表一个字符数组.size代表最大长度.

如果想要把数字字符转成整形:‘6’ - ‘0’ = 6(自动转换) 想要把整形转成字符数字:int(6) 强制转换

大小写转化

printf("%c",char(int(ch)-32)); //小写改大写 printf("%c",char(int(ch)+32));

//大写改小写


‘+’ 的使用

两个字符串常量(如"Hello"+“World”)不能直接相加,因为都是常量.

一个字符串常量,一个string类型的变量可以相加,因为string中+进行了重载.


求字符串长度

C++中获取string类型字符串长度的函数:size(),length()都可.获取字符数组长度:strlen()函数(需要包含string.h头文件)

string.h一般表示与字符串处理相关的函数,string头文件表示使用了string容器.


c++中字符串截取:

s.substr (pos, n) ,pos表示要截取的字符串的开始的位置,n 代表要截取的字符串的长度。 s.substr(pos) ,

表示从pos位置开始的 到字符串最后一位截取的字符串


无穷大

无穷大:INT_MAX, 0x7fffffff(也可0x3f3f3f防止加减乘除时候溢出)无穷小:INT_MIN; 包含头文件

limits.h


优先队列

/*Priority_queue:优先队列,不仅可以存储数据还可以按照某种规则进行排序.每次的push,和pop操作,里面数据都会进行动态调整,把优先级高的放在前面.
使用:*/
template <class T, class Container = vector<T>,
  class Compare = less<typename Container::value_type> > class priority_queue;
/*T:数据类型,第三个参数默认不写是从大到小,如果从小到大可以使用greater<T>.*/


字符串拼接时要注意拼接的每一部分都是字符串类型.可以使用to_string()函数来搞.

另外字符串转换成整形的函数如下:

int val = stoi(str);

long val = stol(str);

float val = stof(str);

long long val = stoll(str);`


25.getline(istream &, string &, char del); 第一个参数打开的流,第二个参数保存读入的内容,第三个参数字段的分割符号,默认是 ‘\n’

26.C++math.h中有函数y1,string中有index,还有map等,所以变量命名时记得避开这些名字.不然就凉了.

27. >> 和<<的优先级低于+,–优先级.所以使用时要注意.


相关文章
|
6月前
|
存储 算法 搜索推荐
标准模版库 知识点总结 C++程序设计与算法笔记总结(八) 北京大学 郭炜(下)
标准模版库 知识点总结 C++程序设计与算法笔记总结(八) 北京大学 郭炜(下)
38 0
|
6月前
|
存储 算法 C++
标准模版库 知识点总结 C++程序设计与算法笔记总结(八) 北京大学 郭炜(上)
标准模版库 知识点总结 C++程序设计与算法笔记总结(八) 北京大学 郭炜(上)
32 0
|
6月前
|
算法 编译器 C++
继承和派生知识点总结 C++程序设计与算法笔记总结(四) 北京大学 郭炜(二)
继承和派生知识点总结 C++程序设计与算法笔记总结(四) 北京大学 郭炜(二)
30 0
|
6月前
|
算法 C++ 索引
函数模板和类模板 知识点总结 C++程序设计与算法笔记总结(七) 北京大学 郭炜(下)
函数模板和类模板 知识点总结 C++程序设计与算法笔记总结(七) 北京大学 郭炜(下)
25 0
|
1月前
|
存储 算法 搜索推荐
【C++ 数据结构与算法 一站式备考指南】一文掌握 数据结构与算法课程 知识点(二)
【C++ 数据结构与算法 一站式备考指南】一文掌握 数据结构与算法课程 知识点
94 2
|
1月前
|
存储 算法 C++
【C++ 数据结构与算法 一站式备考指南】一文掌握 数据结构与算法课程 知识点(一)
【C++ 数据结构与算法 一站式备考指南】一文掌握 数据结构与算法课程 知识点
51 2
|
9月前
|
算法 Java API
【算法】位运算常用算法以及知识点
【算法】位运算常用算法以及知识点
59 0
|
5月前
|
存储 算法
【算法与数据结构】二叉树的三种遍历代码实现(上)—— 用递归序知识点讲解
【算法与数据结构】二叉树的三种遍历代码实现(上)—— 用递归序知识点讲解
28 0
|
6月前
|
算法 编译器 C++
函数模板和类模板 知识点总结 C++程序设计与算法笔记总结(七) 北京大学 郭炜(上)
函数模板和类模板 知识点总结 C++程序设计与算法笔记总结(七) 北京大学 郭炜(上)
28 1
|
6月前
|
存储 算法 Linux
输入和输出 文件读写 知识点总结 C++程序设计与算法笔记总结(六) 北京大学 郭炜
输入和输出 文件读写 知识点总结 C++程序设计与算法笔记总结(六) 北京大学 郭炜
39 1