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

  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 的指针。
    
  5. 动态二维数组的使用:
    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;

  6. 关于数num = abcde 则abc=num /100,cde = num % 100.即/:后面位数被舍去,%前面位数会被舍去.

  7. 三角形中,大边对大角.

  8. 最大公约数的函数__gcd(a,b).需要包含algorithm头文件

     最大公倍数: a*b / 最大公约数
     辗转相除法求最大公约数:
     while(res ! = 0)
     {
     res = a % b;
     a = b;
     b = res;
     }
     最大公约数:a
    
  9. swap(a,b)函数 在头文件iostream中.

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

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

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

  1. Scanf()可以接收指定类型的数据,如scanf("%d/%d/%d",&year,&month,&day); 则输入的格式为2021/1/27.
  2. C++ isalpha、isalnum、islower、isupper函数用法
1.isalpha
	isalpha()用来判断一个字符是否为字母,如果是字符则返回非零,否则返回零。
2.isalnum
	isalnum()用来判断一个字符是否为数字或者字母,也就是说判断一个字符是否属于a~z||A~Z||0~93.islower
	islower()用来判断一个字符是否为小写字母,也就是是否属于a~z。
4.isupper
	isupper()和islower相反,用来判断一个字符是否为大写字母。
	以上几个函数使用时不用包含头文件
  1. 矩阵乘法:Amn , Bnk,当两个矩阵A和B可以相乘时,乘法次数:mnk
  2. 获取一个字符:getchar(),输入一个字符:putchar().需要包含C语言头文件stdio.h(如果需要C语言的输入输出也需要包含该函数
    读取一行字符串:getline(cin,s) s表示string 类型的字符串.
    cin.getline(s,size) s代表一个字符数组.size代表最大长度.
  3. 如果想要把数字字符转成整形:‘6’ - ‘0’ = 6(自动转换) 想要把整形转成字符数字:int(6) 强制转换
  4. 大小写转化

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

  1. ‘+’ 的使用

两个字符串常量(如"Hello"+“World”)不能直接相加,因为都是常量.
一个字符串常量,一个string类型的变量可以相加,因为string中+进行了重载.

  1. 求字符串长度

C++中获取string类型字符串长度的函数:size(),length()都可.获取字符数组长度:strlen()函数(需要包含string.h头文件)
string.h一般表示与字符串处理相关的函数,string头文件表示使用了string容器.

  1. c++中字符串截取:

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

  1. 无穷大

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

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

猜你喜欢

转载自blog.csdn.net/LXYDSF/article/details/114826069