信息学奥赛常用函数(必备绝招)

1. 数学函数

基本数学运算

abs(x)      // 绝对值
max(a, b)   // 返回较大值
min(a, b)   // 返回较小值
pow(x, y)   // x的y次方
sqrt(x)     // 平方根
ceil(x)     // 向上取整
floor(x)    // 向下取整
round(x)    // 四舍五入

排序函数

sort(arr, arr+n)                  // 对数组排序(从小到大)

sort(arr, arr+n, greater<int>())  // 从大到小排序

这个函数有三个参数:

arr - 数组的起始地址

arr+n - 数组的结束地址(实际上是第一个不排序的元素地址)

greater<int>() - 排序规则(从大到小排序)

详细解释 greater<int>()
greater 是一个模板类,表示"大于"的比较方式

<int> 指定了要比较的数据类型是整数

() 表示创建一个临时的 greater 对象

这个比较器会让 sort 函数按照从大到小的顺序排列元素。

实际例子
#include <bits/stdc++.h>  // 需要包含这个头文件
using namespace std;

int main() {
    int arr[] = {3, 1, 4, 1, 5, 9, 2, 6};
    int n = 8;
    
    // 从大到小排序
    sort(arr, arr+n, greater<int>());
    
    // 输出结果
    for(int i=0; i<n; i++) {
        cout << arr[i] << " ";
    }
    // 输出:9 6 5 4 3 2 1 1
    
    return 0;
}

或者自己写比较函数:
bool myCompare(int a, int b) {
    return a > b;  // 从大到小
}

sort(arr, arr+n, myCompare);

2. 字符串处理

strlen(s)           // 字符串长度
strcmp(s1, s2)      // 字符串比较
strcpy(dest, src)   // 字符串复制
strcat(s1, s2)      // 字符串连接
tolower(c)          // 转小写
toupper(c)          // 转大写
isalpha(c)          // 判断是否为字母
isdigit(c)          // 判断是否为数字

strstr(s1, s2)     // 查找子串
strchr(s, c)       // 查找字符
strtok(s, delim)   // 字符串分割
stoi(s)            // 字符串转整数
to_string(x)       // 数值转字符串

C++ string类操作

string s = "hello";
s.find("ll");           // 返回子串位置
s.substr(1, 3);         // 截取子串
s.erase(2, 1);          // 删除字符
s.replace(1, 2, "aa");  // 替换子串
stoi(s);                // 字符串转整型

3. STL容器常用操作

vector(动态数组)

vector<int> v;
v.push_back(x)     // 末尾添加元素
v.pop_back()       // 删除末尾元素
v.size()           // 元素个数
v.empty()          // 判断是否为空
v.clear()          // 清空

stack(栈)

stack<int> s;
s.push(x)          // 入栈
s.pop()            // 出栈
s.top()            // 获取栈顶元素
s.empty()          // 判断是否为空

queue(队列)

queue<int> q;
q.push(x)          // 入队
q.pop()            // 出队
q.front()          // 获取队首元素
q.empty()          // 判断是否为空

4. 算法函数

reverse(arr, arr+n)        // 反转数组
fill(arr, arr+n, value)    // 填充数组
count(arr, arr+n, value)   // 统计出现次数
find(arr, arr+n, value)    // 查找元素
__gcd(a, b)               // 最大公约数

 

 

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇