竞赛章程:https://dasai.lanqiao.cn/notices/839/
oi赛制
C++自带的sort排序函数的使用
需要引用算法库
1 |
通过写
1 | sort(arr,arr+5) |
我们可以将arr中从开始的元素到第5个元素按从小到大的顺序排列
而如果我们写
1 | sort(arr+i,arr+j) |
那么被排序的将是arr[i]到arr[j-1],其他元素将保持原位置
默认是从小到大排序,如果要从大到小排,则可以传入第三个参数–排序方法:
1 |
|
其中,greater表示更大的意思,<int>
表示待排序的数组中的元素类型为int
1 |
|
字符串的两种风格
1 | //c风格字符串 |
c++读入字符串并打印
1 |
|
c语言读入字符串并打印
1 |
|
c语言读入整形数组元素并打印
需要注意的是scanf读入的时候遇到空白字符(空格、制表符、换行符等)或者文件结束符时停止读取,所以输入的时候数字要通过空格或者换行隔开
1 |
|
1 | cout << arr[j] << " "; //空格隔开 |
末尾严格控制空格
知道个数时,判断结尾
1 | for(int i=1;i<=6;i++){ |
不知道个数时,判断开头
1 | for(int i=1;i<=6;i++){ |
在 C++ 的标准库中,sort
函数可以接受一个比较函数作为参数,以便在排序时确定元素的顺序。这个比较函数需要满足一定的条件,它应该接受两个参数(通常是被比较的两个元素),并返回一个布尔值,表示两个元素的比较结果。如果返回 true
,则第一个参数应该排在第二个参数之前;如果返回 false
,则第一个参数应该排在第二个参数之后
1 | bool cmp(int x,int y){ //函数名可以随意 |
结构体赋初值
对于开发更加复杂的程序,我们往往会许哟啊构造函数在初始化的过程中做很多事情,但是对于竞赛 来说,我们只需要构造函数给结构体赋初值就行了,所以我们其实可以使用另一种更加简单的方式,初始化列表,来直接对结构体成员进行初始化:
1 | struct student{ |
如上所示,初始化列表的写法是,在构造函数的括号后面加一个冒号,然后按照成员变量(参数)
的格式,依次对每一个变量进行初始化,彼此之间用逗号隔开。
示例:
1 |
|
对结构体进行排序:
输入三个学生的四科分数并按照分数从高到低排序 ,先看第一科,再看第二科依次类推
1 |
|
排序函数的名字是可以随意命名的,也可以同时定义多个排序函数,根据实际情况调用
1 | #include <cstdio> |
排序两个数的所有位相加的和从小到大,如果相同则比较原数字
1 | bool cmp(int a,int b){ |