单调队列是一种数据结构。 随着区间的向右滑动,区间[i,j)变为[i+1,j+1); 如果a[i]是不是原区间最大值,那么新区间的最大值就是max(q.front(),a[j]); 如果a[i]是原区间最大值,那么新区间最大值就是max...
算法
c++输入挂
普通版: ios::sync_with_stdio(0); 加强版 inline void scan_d(T &ret) { char c; ret = 0; while ((c = getchar()) < '0' || c > '9'); while (c >= '0' && c &l...
使用树状数组来快速计算逆序对数、第K大/小的数
计算逆序对数: 对于一个数列a[n],需要计算第k位的数有多少个逆序对数。 就是要计算在第k位之后,有多少数a[i], i>k && a[i]<a[k] 。 方法是逆序计算。 类似于桶排序,新开一个数组b[...
使用C++11的hash函数对字符串进行散列处理
c++11 在 <functional> 头文件有个hash的函数 使用方法也很简单,以字符串hash为例: std::hash<std::string> h; //声明一个字符串类型的hash string s; s="aaaa"; cout<<h(s)<<endl...
Sticks Problem POJ – 2452 (线段树)
Sticks Problem Time Limit: 6000MS Memory Limit: 65536K Total Submissions: 10724 Accepted: 2855 Description Xuanxuan has n sticks of different length. One day, she pu...
基于ST表的RMQ算法
基于ST表的RMQ算法可以在O(1)的时间复杂度内计算出一个区间内的最值。 基本思想是将一段长度中的最值保存下来。查询的时候直接返回。避免了常规算法中的一次一次比较的操作。 详细请参考书籍:《算法竞赛入...
好文章搜集
经常在学习算法的过程中看见很多好文章,将链接保存至此,方便以后查看 CS自学指南 计算机专业学习路线 KMP算法详解 写了ACM的入门之路 编程进阶 - Cifer - 博客频道 - CSDN.NET [kuangbin带你飞]专题1-...
[转]图的理论基础
https://wangkuiwu.github.io/2013/04/05/graph-thesis/ 图的基本概念 1. 图的定义 定义:图(graph)是由一些点(vertex)和这些点之间的连线(edge)所组成的;其中,点通常被成为"顶点(vertex)",而点与...
Prim算法
https://www.cnblogs.com/skywang12345/p/3711506.html 普里姆算法介绍 普里姆(Prim)算法,和克鲁斯卡尔算法一样,是用来求加权连通图的最小生成树的算法。 基本思想 对于图G而言,V是所有顶点的集合;现在...
Kruskal 最小生成树算法
一个非常好的GIF演示图 算法步骤说明 新建图G,G中拥有原图中相同的节点,但没有边 将原图中所有的边按权值从小到大排序 从权值最小的边开始,如果这条边连接的两个节点于图G中不...