输入 nn(n<5000000n<5000000 且 nn 为奇数) 个数字 a_i(0 无 无 输入 #1复制 输出 #1复制 分析: 这题看起来很简单,但是必须搞明白一个问题,到底有没有重复的数字,例如1,2,2,3,5,第2小的数到底是重复的那个2,还是跳过重复的取3?这个纠结了很久,看了看大家的答案,似乎是第一种,就是不管重复,排序好之后直接输出a[k]就行(数组从0开始),那手撸快排,其他不多说,走你 三个对了,俩超时,想想也是,五百万的界限,稍微有点 不好就会超时吧,而且我还考虑到手写的快排或许没有sort效率高,专门换成了sort,但是还是超时,问题应该不是在这里,去看看题解吧 大家好厉害,原来STL还有nth_element这个函数,这个函数主要用来将数组元素中第k小的整数排出来并在数组中就位 用法:nth_element(数组名,数组名+第k小元素,数组名+元素个数) 话不多说,快排删了,来这个函数 走你,Σ( ° △ °|||)︴,还是超时了,这是为什么,就这不到几十行的代码,凭什么你AC我就超时,仔细对比了下和别人的代码,貌似唯一的不同点就在于我用的是cin,而他用的是scanf? 别开玩笑了,都什么时候了还在用C语言的scanf,cin不香吗?但也没什么其他好改的了,就先试试吧,改成scanf AC了?!!为什么,凭什么,难道我cin干不过scanf?我不信,我去查查 然而.....https://www.cnblogs.com/limera/p/5405705.html 还是我太年轻了,cin就是干不过scanf,这篇博客说的很清楚 就这样,scanf效率就是高,而且要注意,这道题最高可是要读取五百万个数字,一个数cin或许不会比scanf慢多少,但是再小的时间,乘以五百万,都是一个大时间,哎,以后要注意了...输入格式
输出格式
输入输出样例
5 1
4 3 2 1 5
2
#include
#include
#include
scanf是格式化输入,printf是格式化输出。
cin是输入流,cout是输出流。效率稍低,但书写简便。
格式化输出效率比较高,但是写代码麻烦。
流输出操作效率稍低,但书写简便。
cout之所以效率低,正如一楼所说,是先把要输出的东西存入缓冲区,再输出,导致效率降低。