![](https://img-blog.csdnimg.cn/20190918135101160.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
算法
c++竞赛算法
开始King
这个作者很懒,什么都没留下…
展开
-
编程比赛中常见的stl
vector 向量 变长数组 倍增的思想 stringqueue 队列 priority_queue 优先队列(堆)stack 栈deque 双端队列set , map, multiset ,multimap 基于平衡二叉树(红黑树)unordered_set, unordered_multiset, unordered_map 哈希表unordered_multimapbitset 压位vector 在头文件#include<vector>并位于 std 命名空间中v原创 2021-09-24 21:09:41 · 119 阅读 · 0 评论 -
双指针算法
双指针算法核心思想就是for(int i=0;i<n;i++) for(int j=0;j<n;j++) O(n^2)把朴素算法优化到O(n) for(int i=0,j=0;i<n;i++) while(j<i && check(i,j)) j++ //i,j满足某种规律 //每道题的具体逻辑举个简单的例子把abc def code zxc输出,每个单词占一行#includ原创 2021-09-13 15:05:24 · 99 阅读 · 0 评论 -
高精度加法(大整数加法)
高精度加法是高精度四则运算中比较简单的,主要就是将长整数当成string读入,然后倒着存到vector中,然后处理一下进位的问题#include<iostream>#include<vector>using namespace std;vector<int> add(vector<int> &A, vector<int> &B){ vector<int> C; int t=0; f原创 2021-09-12 16:04:27 · 675 阅读 · 1 评论 -
加速cin cout输入输出速度
ios::sync_with_stdio设置在每次输入/输出操作后标准 C++ 流是否与标准 C 流同步。这使得自由混合 C++ 和 CI/O 成为可能。ios::sync_with_stdio(false);如果关闭同步,则允许 C++ 标准流独立缓冲其 I/O,在某些情况下这可能会快得多。tie是将两个stream绑定的函数,空参数的话返回当前的输出流指针。其实cin的读取速度并不比scanf慢图片从下到上依次是使用cin,cout使用cin,cout的基础上关闭同步ios::syn原创 2021-09-11 16:08:14 · 751 阅读 · 0 评论 -
算法归并排序
归并排序其实是比较简单的1.确定分界点2.递归排序3.归并 合二为一比如排序9 7 7 3 2图画的难看还请见谅,大概就是这么个意思#include<iostream>using namespace std;const int N=1e5+10;int a[N],tmp[N];void merge_sort(int a[],int l,int r){ if (r==l) return ; int mid=l+r>>1; merge_sor原创 2021-09-08 20:33:41 · 79 阅读 · 0 评论 -
算法快速排序
快排的思想主要是分治1.确定分界点x=a[i],a[r],a[l+r>>2],或者区间上的任意一个数2.分区间,左侧<=x,右侧>=x3.递归处理左右比如3 1 2 3 5用两个数i,j模拟指针#include<iostream>using namespace std;const int N=1e5+10;int a[N];void quick_sort(int a[],int l,int r){ if(l>=r) return ; /原创 2021-09-08 15:49:02 · 84 阅读 · 0 评论 -
离散化求区间和
离散化算法主要应用于:值域特别的大 :0 ~10910^9109 , 但是实际用到的个数只有10510^5105 左右把每个数都映射到从0开始的自然数1.a[]中不能有重复元素, 去重2.如何算出离散化后的值, 二分举个例子(题目来源acwing)假定有一个无限长的数轴,数轴上每个坐标上的数都是 0。现在,我们首先进行 n次操作,每次操作将某一位置 x 上的数加 c。接下来,进行 m次询问,每个询问包含两个整数 l 和 r,你需要求出在区间 [l,r] 之间的所有数的和。输入格式第一行原创 2021-09-06 12:20:49 · 221 阅读 · 0 评论