《算法竞赛进阶指南》学习总结 #include<algorithm>
2020-12-13 05:27
标签:运算 解释 操作 shuffle 算法 style 配套 ever 字典序 今天下午大致学完了进阶指南中algorithm头文件下的内容,在这里进行一个总结。 reverse翻转 顾名思义,reverse进行的操作就是翻转原来的顺序,理解非常简单,故不赘述。 操作样例: unique去重 int m=unique(a.begin(),a.end())-a.begin(); int n=unique(b+1,b+1+len)-b-1; 操作样例: random_shuffle随机打乱 用法和reverse相同,我都懒得写代码了... sort快速排序 想必sort的一般用法大家都很熟悉了,不再赘述,但vector 我看网上有很多博客介绍,但似乎都不太清晰,所以自己摸索出了一种比较麻烦占空间但简单易懂的方法,希望dalao指点。 操作实例: permutation全排列 组合数学大家一定多多少少都有所了解,全排列指的就是A(n,n)式的所有排列方法,也就是说五选五。 next_permutation()会取得[first,last)所标示之序列的下一个排列组合; 利用next_permutation的返回值,判断是否全排列结束 如果没有下一个排列组合,便返回false; 否则返true; STL提供了两个用来计算排列组合关系的算法; 分别是next_permutation和prev_permutation; 下一个全排列(next_Permutation) 前一个全排列(prev_permutation) 简单来说 next_permutation prev_permutation 二者返回值为true/false 用来判断是否还有下一个排列 全排列的输出正常的for循环即可 注:两者为互逆运算 lower_bound与upper_bound l_b的作用是在一个区间内寻找第一个大于等于x的元素的位置,u_b是查找 当然还有其他操作,比如它有一个很重要的作用就是和unique函数配套使用进行离散化,后续我会在STL的总结中具体解释。 我的总结主要以代码为主,algorithm下的函数都简单易懂,没有用太多的文字说明,都是自己手打测试的操作实例,多测试几组数据,自然就明白了。 如果有不对的地方,希望dalao指正。>w
标签:运算 解释 操作 shuffle 算法 style 配套 ever 字典序 原文地址:https://www.cnblogs.com/valentino/p/11141123.html#include
//vector的实现
scanf("%d",&na);
for(int i=0;i
//数组下的实现
scanf("%d",&nb);
for(int i=1;i)
scanf("%d",&b[i]);
reverse(b+1,b+1+nb);
for(int i=1;i)
printf("%d ",b[i]);
return 0;
}
unique的含义仍然很好理解ovo,我也不说太多了,函数返回值可以是去重后的元素个数,比如:#include
#include
按照字典序由小到大的全排列
按照字典序由大到小的全排列#include
第一个大于x的元素的位置,返回值就是其位置。#include
文章标题:《算法竞赛进阶指南》学习总结 #include<algorithm>
文章链接:http://soscw.com/essay/31045.html