Luogu P1177 【模板】快速排序

\(\Large{AC}\) 代码:

#include<bits/stdc++.h>
using namespace std;
int n,a[100010];
bool cmp(int x,int y){
return x<y;
}
signed main(){
cin>>n;
for(int i=0;i<n;i++) cin>>a[i];
sort(a,a+n,cmp);
for(int i=0;i<n;i++) cout<<a[i]<<("\n "[i!=n-1]);
return 0;
}

\(\Large{TLE}\) 代码:

#include<bits/stdc++.h>
using namespace std;
int n,a[100010];
bool cmp(int x,int y){
return x<=y;
}
signed main(){
cin>>n;
for(int i=0;i<n;i++) cin>>a[i];
sort(a,a+n,cmp);
for(int i=0;i<n;i++) cout<<a[i]<<("\n "[i!=n-1]);
return 0;
}

有木有发现就是第 \(5\) 行的 < 与 <= 的区别...

这是由于 std::sort 中 cmp(x,y) 类似于:

现在 x 在 y 后(右)边,cmp 返回 x 是否应该超到 y 的前(左)边。

那为什么 <= 会 \(\Large{TLE}\) 呢?

由于 std::sort 中的某些蜜汁操作,当有两个值相同的元素 \(x,y\) 时,程序里会反复交换 \(x,y\),导致 \(\Large{TLE}\)。

所以啊,

写 std::sort 的 cmp 时,若两个元素判定为相同的,请务必输出

\[\Large{False}
\]

std::sort 的注意事项的更多相关文章

  1. 将三维空间的点按照座标排序(兼谈为std::sort写compare function的注意事项)

    最近碰到这样一个问题:我们从文件里读入了一组三维空间的点,其中有些点的X,Y,Z座标只存在微小的差别,远小于我们后续数据处理的精度,可以认为它们是重复的.所以我们要把这些重复的点去掉.因为数据量不大, ...

  2. 源码阅读笔记 - 1 MSVC2015中的std::sort

    大约寒假开始的时候我就已经把std::sort的源码阅读完毕并理解其中的做法了,到了寒假结尾,姑且把它写出来 这是我的第一篇源码阅读笔记,以后会发更多的,包括算法和库实现,源码会按照我自己的代码风格格 ...

  3. c++ std::sort函数调用经常出现的invalidate operator<错误原因以及解决方法

    在c++编程中使用sort函数,自定义一个数据结构并进行排序时新手经常会碰到这种错误. 这是为什么呢?原因在于什么?如何解决? 看下面一个例子: int main(int, char*[]) { st ...

  4. std::sort引发的core

    #include <stdio.h> #include <vector> #include <algorithm> #include <new> str ...

  5. 一个std::sort 自定义比较排序函数 crash的分析过程

    两年未写总结博客,今天先来练练手,总结最近遇到的一个crash case. 注意:以下的分析都基于GCC4.4.6 一.解决crash 我们有一个复杂的排序,涉及到很多个因子,使用自定义排序函数的st ...

  6. Qt使用std::sort进行排序

    参考: https://blog.csdn.net/u013346007/article/details/81877755 https://www.linuxidc.com/Linux/2017-01 ...

  7. 非常无聊——STD::sort VS 基数排序

    众所周知,Std::sort()是一个非常快速的排序算法,它基于快排,但又有所修改.一般来说用它就挺快的了,代码一行,时间复杂度O(nlogn)(难道不是大叫一声“老子要排序!!”就排好了么...). ...

  8. 今天遇到的一个诡异的core和解决 std::sort

    其实昨天开发pds,就碰到了core,我还以为是内存不够的问题,或者其他问题. 今天把所有代码挪到了as这里,没想到又出core了. 根据直觉,我就觉得可能是std::sort这边的问题. 上网一搜, ...

  9. std::sort的详细用法

    #include <algorithm> #include <functional> #include <array> #include <iostream& ...

随机推荐

  1. Electron团队为什么要干掉remote模块

    Electron团队提供remote模块给开发者, 主要目的是为了简化渲染进程和主进程互访的难度, 这个目的却是达到了. 但也带来了很多问题, 归纳起来主要分为以下四点: 第一:它很慢 通过remot ...

  2. APMServ中Apache启动失败的原因

    APMServ中Apache启动失败绝大多数的情况是因为APMServ得路径出错和80端口被占用,也有可能您使用的是WIN8系统,下面SJY根据不同情况告诉大家如何解决APMServ中Apache启动 ...

  3. Tomcat 端口配置及原理详解

    1. tomcat 文件配置详细说明 tomcat服务器需配置三个端口才能启动,安装时默认启用了这三个端口,当要运行多个tomcat服务时需要修改这三个端口,不能相同.端口配置路径为tomcat\ c ...

  4. zap高性能日志

    摘要 日志在整个工程实践中的重要性不言而喻,在选择日志组件的时候也有多方面的考量.详细.正确和及时的反馈是必不可少的,但是整个性能表现是否也是必要考虑的点呢?在长期的实践中发现有的日志组件对于计算资源 ...

  5. 操作系统IO之零拷贝技术

    磁盘可以说是计算机系统最慢的硬件之一,读写速度相差内存 10 倍以上,所以针对优化磁盘的技术非常的多,比如零拷贝.直接 I/O.异步 I/O 等等,这些优化的目的就是为了提高系统的吞吐量,另外操作系统 ...

  6. 20210804 noip30

    考场 第一眼感觉 T1 是状压 DP,弃了.T2 好像也是 DP???看上去 T3 比较可做. 倒序开题.T3 暴力是 \(O(pn\log p)\)(枚举 \(x\),二分答案,看能否分成合法的不超 ...

  7. C语言实现有限状态机

    1. 什么是有限状态机 有限状态机在百度百科上的解释为: 有限状态自动机(FSM "finite state machine" 或者FSA "finite state a ...

  8. SQL Server 使用bcp进行大数据量导出导入

    转载:http://www.cnblogs.com/gaizai/archive/2010/04/17/1714389.html SQL Server的导出导入方式有: 在SQL Server中提供了 ...

  9. JDBC管理事务

    一.事务概念:打包一起的多个步骤的业务操作,要么同事成功,要么同时失败,则需要用事务管理: 二.代码实现

  10. WPF WPF中解决内存泄露的几点提示与解决方法

    http://www.cnblogs.com/LastPropose/archive/2011/08/01/2124359.html 一直以来用WPF做一个项目,但是开发中途发现内存开销太大,用ANT ...