
算法
文章平均质量分 52
TheBegin
2 be better.
展开
-
lower_bound和upper_bound
STL中的lower_bound和up_boundlower_bound查找“大于或等于x的第一个位置”upper_bound查找“大于等于x的最后一个位置”用法案例:#include#includeusing namespace std;int main(void){ int a[7]; for(int i=0;i<7;i++) cin>>a[i];原创 2017-07-14 17:07:27 · 251 阅读 · 0 评论 -
RMQ
RQM 区间最值查询即给定一个数组 a,查询数组下标 x 到下标 y 的最值。该算法在时间 O(nlogn) 内预处理,然后在时间 O(1) 内回答每个查询下面通过举例说明给出代码数组arr:5 6 7 2 8 9 0 4 1dp [ i ] [ j ] 表示从 arr [ i ] 起,长度为 1 故dp [ 1 ] [ 0 ] = max (原创 2017-08-08 17:12:33 · 216 阅读 · 0 评论 -
博弈论
1.尼姆博弈有n堆物品,每堆分别有物品数量a,b,....z等,两人轮流取,最少取一个,最多不限,最后取光者胜结论: a^b^c^...^z=0时先手必败代码如下: int n; //n堆物品 int tag=0; //保存异或结果,初始化为0 int size; //每堆物品的数量 cin>>n; while(n-原创 2017-08-04 11:20:10 · 241 阅读 · 0 评论 -
Dijkstra算法
Dijkstra算法适用于最短路问题中边权为正的情况,可用于计算单源最短路,即从单个源点出发,到各个结点的最短路。该算法同时适用于有向图和无向图,并且图中可有环。《算法竞赛入门经典》一书中将该算法思路作如下描述: 设数组 d [ i ] 表示 从 源点 到 结点 i 的 最短路。 d [ 0 ]原创 2017-08-04 14:49:47 · 1138 阅读 · 0 评论 -
什么是离散化?
对于“什么是离散化”,搜索帖子你会发现有各种说法,比如“排序后处理”、“对坐标的近似处理”等等。哪个是对的呢?哪个都对。关键在于,这需要一些例子和不少的讲解才能完全解释清楚。 离散化是程序设计中一个非常常用的技巧,它可以有效的降低时间复杂度。其基本思想就是在众多可能的情况中“只考虑我需要用的值”。下面我将用三个例子说明,如何运用离散化改进一个低效的,甚至根本不可能实现的算法。 《...转载 2018-07-24 14:58:56 · 3017 阅读 · 0 评论