图论树见专项
string
reverse(string.begin(), string.end()) 反转
string.erase 删除某一位置上的字符
stoi(string) // 把string转换为int
atoi(string.string_str()) // 把string转换为int
to_string(int) //把int转为string
字符串截取 a = s.substr(i,k)
第i个起,截取k个
STL
用一个set就能解决重复和排序问题
复习set用法,访问用it指针,set默认去重,从小到大排序
添加元素用insert,清除某一个用erase,查找某一个用find
vector的back是返回最后一个值
pop_back()不带参数,弹出最后一个值
其他
Dev C++ 里不能用 string头文件里函数的原因:
编译器问题
工具——编译选项——代码生成/优化——代码生成——语言标准(-std),选择ISO C++11。
0,1都不是素数
平方探测法
vector tin(ans,ans+n+1);赋值
1.大顶堆小顶堆不是左右子树比大小
大顶堆是父节点都大于子节点
小顶堆是父节点都小于子节点
2.存树的时候
如果下标从0开始的时候,左右点用i *2+1 i *2+2
如果下标从1开始的时候,左右点用i *2, i * 2+1
走所有的父节点时
从0开始 是到(size-1)/ 2
从1开始 是到size / 2
rank排名方法
arr[0].rank = 1;
for(int i=1; i<l; i++){
if(arr[i].score == arr[i-1].score) arr[i].rank = arr[i-1].rank;
else arr[i].rank = i+1;
}
int rank=0;
int pre = -1;
for(int i=0; i<ans.size(); i++){
if(pre != ans[i].score) rank++;
pre = ans[i].score;
}
unordered_map 是map的无序版,时间更短,不会超时
map底层是红黑树,平衡二叉树插入,需要时间
unordered_map 是用哈希,时间更短
注意需要加头文件,和本身名字一样
学习到了vector里面是结构体的时候怎么插入
ans.push_back(node{,})
atof:将数字字符串转为浮点数,但是atof是针对char类型。string转为char,使用s.c_str()
stof:将string类型转为浮点数float
stod: 将string转为double类型
sscanf(a,"%d",b) a为某某格式存入b
sprintf(a,"%d",b)b为某某格式存入a
这道题1的情况要单独输出,因为是number单数,不是numbers
unsigned int 0~4294967295 (10位数,4e9)
int -2147483648~2147483647 (10位数,2e9 2^31 - 1)
long long: -9223372036854775808~9223372036854775807 (19位数, 9e18 ) 2^63 - 1
unsigned long long:0~18446744073709551615 (20位数,1e19) 2^64 - 1
ceil(a) 向上取整
floor(a) 向下取整
round(a) 四舍五入
进制转换
do{
arr[l++] = n%d;
n /= d;
}while(n != 0);
for(int i=0; i<l; i++){
n = n*d + arr[i];
}
STL模板 nth_element
可以用来取中间数
#include <algorithm>
nth_element(arr.begin(),arr.begin+(l-1)/2,arr.end());
二分查找
while(left < right){
mid = (left + right)/2;
if(arr[mid] >= m)
right = mid;
else left = mid + 1;
}
inlcude <cctype>
isupper(c) 是否为大写
islower(c) 是否为小写
isdigit(c) 是否为数字
isalpha(c) 是否为字母
isalnum(c) 是否为字母或数字
tolower() 大写字母转换为小写字母
toupper() 小写字母转换为大写字母
最大公约数
int gcd(int a, int b){
return b == 0 ? a : gcd(b,a%b);
}
最小公倍数
int icm(int a, int b){
return a*b/gcd(a,b);
}