转载自:杂项 | 算竞常用 C++ STL 用法 - 颢天笔记
部分显示会有问题,一部分 markdown 语法和主题的样式会有冲突······
C++ 标准模板库 (STL, Standard Template Library) :包含一些常用数据结构与算法的模板的 C++ 软件库。其包含四个组件——算法 (Algorithms)、容器 (Containers)、仿函数 (Functors)、迭代器 (Iterators).
示例:
算法:sort(a.begin(), a.end())
容器:priority_queue<int> pque
仿函数:greater<int>()
迭代器:vector<int>::iterator it = a.begin()
1 前言STL 作为一个封装良好,性能合格的 C++ 标准库,在算法竞赛中运用极其常见。灵活且正确使用 STL 可以节省非常多解题时间,这一点不仅是由于可以直接调用,还是因为它封装良好,可以让代码的可读性变高,解题思路更清晰,调试过程 往往 更顺利。
不过 STL 毕竟使用 ...
d7101d19ddf67ff2dbafa3145e5c10c3fcd3dc23544451617469759b043aba6c5060e5725510d17cc67eb109d1faefd5cf3f92858cc8acb786f421e38ec4570733e167ab28088b6d475179c099414e5f7c990022351a1e23ac26ea7daca501ce79005548d8160898af37570d8e5dcee039509d97275dc122528110f9a03f1f92c98d94946c5fe007851f08ab95081c55cf20f3825c60bb1c5883be67668188742bd5dd2bebc467923ff6a99ebc7dd1524f6d924618b3c017dec0dff63bc36ff69f84de13d37c766c7d0f55ba4b11bc8fa70267ef9ab4d93ed264f3acc90a1bd56d4cdfa4a672e4769bec597491023d081aad5fc60ce3c6749 ...
73516ce51c0febcc53f6c4242687819e8dc370c68773b6e036b2f1a13120eff95124eae5b1fdd972c5d7c771802df0a631773307a654c48ecf0735ef6526b926733a9b593bd6fd70bc2631e060f83ef121d6d9fb2400845285251ae2649a878ec86fd1c393f91cc10c5f9d48b85b045c066896a6ae86cd5a396505dceba32ebaad2038f8fce8580fd447547bcd3c067cbc4a0603e256da4f8ce3cdb1afa93eb0ad32d31997d273fcb00548ef309ce2ace1817097881a655ebf9f63e5650b096ffdbe39bf3966c3cdc334edcc98bba9f2b419154853a71cf7818db13cb61aecaa7bc713d1f819bb527391a5786098b3328b6e025749ddfc016 ...
AcWing
未读[toc]
AcWing 787. 归并排序 - 糖豆爸爸 - 博客园
AcWing 787. 归并排序【简单】一、题目描述给定你一个长度为 n 的整数数列。请你使用归并排序对这个数列按照从小到大进行排序。并将排好序的数列按顺序输出。
输入格式输入共两行,第一行包含整数 n。第二行包含 n 个整数(所有整数均在 1∼109 范围内),表示整个数列。
输出格式输出共一行,包含 n 个整数,表示排好序的数列。
数据范围1≤n≤100000
输入样例:
53 1 2 4 5
输出样例:
1 2 3 4 5
二、算法原理相关的分析、总结都在这篇帖子了:
第一讲 基础算法 - 02归并排序 | Akari的小站
三、实例模拟具体的我们以一组无序数列{14,12,15,13,11,16}为例分解说明,如下图所示:
上图中首先把一个未排序的序列从中间分割成 2 部分,再把 2 部分分成 4 部分,依次分割下去,直到分割成一个一个的数据,再把这些数据两两归并到一起,使之有序,不停的归并,最后成为一个排好序的序列。
四、AC代码/** * @version: * @author: @A ...
AcWing
未读[toc]
AcWing《算法基础课》第1章 算法基础 - AcWing
AcWing 787. 归并排序 - 糖豆爸爸 - 博客园
AcWing 算法基础课笔记 1.基础算法-CSDN博客
1.5 归并排序 | 菜鸟教程
推荐一个数据结构可视化网站,可以看到归并排序的推理过程:https://www.cs.usfca.edu/~galles/visualization/ComparisonSort.html
归并排序一、简介归并排序(Merge sort)是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。作为一种典型的分而治之思想的算法应用,归并排序的实现由两种方法:
自上而下的递归(所有递归的方法都可以用迭代重写,所以就有了第 2 种方法);
自下而上的迭代;
二、算法步骤菜鸟教程:
申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列;
设定两个指针,最初位置分别为两个已经排序序列的起始位置;
比较两个指针所指向的元素,选择相对小的元素放入到合并空间,并移动指针到下一位 ...
6eea61888870a3d7f027c4b8a742d1e2eeedcea4f9e83fd948fdd0ae1c63478bc5d36a7146a6bce8c79094ac7d8497331e6be0c9883ab8565bc8257bd43d162c35b5e799ea89e5c0007bc84aa8f76dabfe58f9faaec6d0aa8a8dd8237b95cdfb058f0b0a1deb1c1a220538d3a9553663ed3cc2aeda0b27c94d02a0d406302ab4bef9425dd51c8ebc5ac3a401edbfe0cc815fbc89f04d80b5b78e26d5ff39e16110a686312134910c832cc3d33f22103d02e4ad4faf0b10de8dd06fe464ada6ca2bf62b96546c791c6a2000986192977f887f6880803d32f8ac37ee74dee31df71f12128b5dd5a74342a307a89c67a7343a209b4067466501c ...
AcWing
未读[toc]
AcWing 786. 第k个数 - 糖豆爸爸 - 博客园
AcWing 786. 第k个数【简单】*一、题目描述给定一个长度为 n 的整数数列,以及一个整数 k,请用快速选择算法求出数列从小到大排序后的第 k 个数。
输入格式第一行包含两个整数 n 和 k。第二行包含 n 个整数(所有整数均在 1∼109 范围内),表示整数数列。
输出格式输出一个整数,表示数列的第 k 小数。
数据范围1≤n≤100000,1≤k≤n
输入样例:
5 32 4 1 5 3
输出样例:
3
二、AC代码
version 1.0 模板这是我一开始写的,肯定是能过的,没想那么多,总结交了——直到我看了题解。
#include <iostream>#include <cstring>#include <algorithm>using namespace std;const int N = 1e6 + 10;int q[N];void quick_sort(int q[], int l, int r);int main(){ int ...
AcWing
未读[toc]
琢磨太深,使人痛苦!!!琢磨太深,使人痛苦!!!琢磨太深,使人痛苦!!!
推荐阅读:
AcWing 785. 快速排序算法的证明与边界分析 - AcWing
AcWing 785. 快速排序算法、时间复杂度、代码
AcWing 785. 快速排序 - 糖豆爸爸 - 博客园
快速排序最好、最坏以及平均复杂度推导理解 - CSDN
785. 快速排序 - AcWing【简单】一、题目描述给定你一个长度为 n 的整数数列。请你使用快速排序对这个数列按照从小到大进行排序。并将排好序的数列按顺序输出。
输入格式输入共两行,第一行包含整数 n。
第二行包含 n 个整数(所有整数均在 1∼109 范围内),表示整个数列。
输出格式输出共一行,包含 n 个整数,表示排好序的数列。
数据范围:
1≤n≤100000
输入样例:
53 1 2 4 5
输出样例:
1 2 3 4 5
二、AC代码#include <iostream>#include <cstring>#include <algorithm>using namespace st ...
AcWing
未读[toc]
十大排序——快速排序 | Akari的小站
Acwing 基础算法总结 - AcWing
AcWing 算法基础课笔记 - CSDN
推荐阅读:
AcWing 785. 快速排序算法的证明与边界分析 - AcWing
AcWing 785. 快速排序算法、时间复杂度、代码
AcWing 785. 快速排序 - 糖豆爸爸 - 博客园
快速排序最好、最坏以及平均复杂度推导理解 - CSDN
快速排序快速排序算法模板 —— 模板题 AcWing 785. 快速排序
1. 简介快速排序是一种常见且高效的排序算法。其基本思想可以归纳为以下几个步骤:
选择一个基准元素(通常是数组的第一个或最后一个元素)作为分割点。
将数组中小于基准的元素移动到基准的左边,大于基准的元素移动到右边。这个过程称为分区操作。
对分区后的左右两个子数组,重复步骤1和步骤2,直到子数组的大小为1或0,即已经排序完成。
最后将所有子数组拼接起来,即得到排好序的数组。
这种分而治之的思想使得快速排序具有较好的平均时间复杂度(O(nlogn)),并且它是一种原地排序算法,不需要额外的辅助空间 ...