目录
一.问题带入:
二.快速读入
三.其他优化方法:
1.优化函数:
2.万能头文件:
3.常量:
4.寄存器变量:
四.总结
感谢各位大佬的阅读!
最近在做一道用归并排列的排序的题,它是这样的:
输入n个数字a[i],输出这些数字的第 k 小的数。最小的数是第 0 小。
刚开始,我以为这就是一道普普通通的排序题,于是:
可是:
当我重新看这道题时,才发现了这个条件:
本题最多设计输入5000W个数字,需注意读入优化。
那,该怎么优化读入呢?
对于cin输入来说,通常输入1000W个数字需要1s的时间,而scanf的输入效率比cin快约2-3倍,但依旧不够快。而众所周知,字符的输入速度比数字要快很多,所以我们可以先以字符的形式读入再转换成数字形式。
代码:
在经过排列的优化以及快读之后,上面那道题的正确代码就变成了这样:
然后:
AC啦!!
当然c++它也有自带的优化方法,现在我就来讲解一下我们最常用的几种:
1.优化函数:
我们可以通过c++自带的优化函数进行优化,以下是我从各大网站上找来的各种优化函数:
2.万能头文件:
在平常的编程中,我们也可以通过使用万能头文件降低复杂度。平常我们编程时经常需要这样:
但是用了万能头文件之后就变成了这样:
注:但是并不是所有OI竞赛都支持使用,所以还是不太推荐在竞赛上使用。
3.常量:
如果要存储一个在程序中不会改变的量,可以用常量来定义,比如:
4.寄存器变量:
register 是 C++ 中的一个关键字,用于请求编译器将变量存储在寄存器中,以便提高访问速度。然而,在现代编译器中,通常不需要使用 关键字,因为编译器会自动进行优化。实际上,C++17 标准甚至已经移除了对 关键字的强制性要求。
使用 声明变量时与运用别的变量不同,它的语法如下:
在c++中,可以使用不同的方法啊呼出各种变量的纸。
输出整数:
输出浮点数:
输出双精度浮点数:
输出字符:
输出字符串: