随笔分类 -  算法与数据结构整理

摘要:在OI竞赛中,当遇到数组的数据范围远远大于数组大小时,就可以使用离散化。 把A[1~N]数组的每一位都对应在[1~N]上的某个数字。当数组中有重复数据时,比较常用的方法就是lower_bound+unique, 这样的话离散化完的数据还是能保留重复的。 阅读全文
posted @ 2019-04-01 11:34 MoerBlack 阅读(174) 评论(0) 推荐(0)
摘要:三分可以说是二分的升级版,二分是在有序数组中操作,而三分则是在单峰函数中操作。以凸函数为例,把区间三等分,L、A、B、R。当f(A)>f(B)时,就把B至R这一段舍弃掉,而当f(A)<f(B)时,就把L至A舍弃,当f(A)和f(B)相等时,就留下中间一段。 例题 luoguP3382 阅读全文
posted @ 2019-03-20 11:02 MoerBlack 阅读(188) 评论(0) 推荐(0)
摘要:二分在C++ STL中可以直接使用,lower_bound 与 upper_bound 函数。lower_bound 代表在有序数组中找到第一个大与等于键值的位置, 而upper_bound代表第一个大于键值的位置,不过并不是所有与二分有关的可以用这两个函数。 在手动写二分时,主要要注意的是L R和 阅读全文
posted @ 2019-03-18 16:43 MoerBlack 阅读(140) 评论(0) 推荐(0)
摘要:倒序存高精度整数,从个位开始对齐。输出时也倒序输出。 1.加法 2.减法 3.乘法 4.除法(高精除以高精) 阅读全文
posted @ 2019-03-06 14:37 MoerBlack 阅读(154) 评论(0) 推荐(0)
摘要:普通排序:使用c++的stl工具就可以完成,在头文件中加入algorithm。例如要对数组a[1]~a[n]进行排序,sort(a+1,a+n+1)即可。 下面说一些sort的拓展。sort默认的是升序,要是需要改成降序,可以自己写一个cmp比较函数, 或者也可以在头文件中加入functional, 阅读全文
posted @ 2019-02-26 18:28 MoerBlack 阅读(223) 评论(0) 推荐(0)