摘要: 对于这种题: 给定n个数,如果一个数出现x次,则对答案的贡献为x^2,求这n个数对答案的贡献是多少。 n<=100000。 简单来说: 1 2 2 1^1+2^2 = 5 1 2 2 2 3 1 3 1 = 11 那么如果开一个数组来真正存这些你要平方的这些数,那这中间会有很多的“空档”,占内存不说 阅读全文
posted @ 2018-02-06 11:25 Zhoier 阅读(221) 评论(0) 推荐(2) 编辑
摘要: SPFA是Bellman-Ford算法的一种队列实现,减少了不必要的冗余计算。 主要思想是: 初始时将起点加入队列。每次从队列中取出一个元素,并对所有与它相邻的点进行修改,若某个相邻的点修改成功,则将其入队。直到队列为空时算法结束。 这个算法简单的说就是队列优化的bellman-ford,利用了每个 阅读全文
posted @ 2018-01-24 09:04 Zhoier 阅读(735) 评论(1) 推荐(2) 编辑
摘要: 用lower_bound进行二分查找 ●在从小到大排好序的基本类型数组上进行二分查找。 这是二分查找的一种版本,试图在已排序的[first,last)中寻找元素value。如果[first,last)具有与value相等的元素(s),便返回一个迭代器,指向其中第一个元素。如果没有这样的元素存在,便返 阅读全文
posted @ 2018-01-23 15:06 Zhoier 阅读(427) 评论(0) 推荐(1) 编辑
摘要: gcd就是最大公约数,学递归的时候已经敲过这个代码了。但是孰不知在<algo.h>的文件库里有自带gcd函数,只需一行便能实现两个数的最大公约数了。 函数原型: 举个栗子: 输出就是8,是24,16的最大公约数。 阅读全文
posted @ 2018-01-23 11:29 Zhoier 阅读(145) 评论(0) 推荐(1) 编辑
摘要: 下图将所有的STL算法(以及一些非标准的SGI STL算法)的名称、用途、文件分布等等,依算法名称的字母顺序列表。表格中凡是不在STL标准规格之内的SGI专属算法,都以 * 加以表示。 注:以下“质变”栏意为mutating,意思是“会改变其操作对象之内容” 阅读全文
posted @ 2018-01-23 10:59 Zhoier 阅读(198) 评论(0) 推荐(1) 编辑
摘要: 这算法由SGI专属,并不在STL标准之列。它用来设定某个区间的内容,使其内的每一个元素从指定的value值开始,呈现递增状态。它改变了区间内容,所以是一种质变算法。 阅读全文
posted @ 2018-01-22 11:13 Zhoier 阅读(249) 评论(1) 推荐(1) 编辑
摘要: 看到这道题,第一个想法就是“搜索”!“回溯”!的确,这种思路是很正确的,BFS和DFS都可以来解决: 咱们来模拟以下队列的操作: 首先,初始化一个队列(拿脑子想出了一个队列……),然后,定义头指针head和尾指针tail都为1。 如果尾指针在head的位置上或者head的前面,则这个queue不是空 阅读全文
posted @ 2018-01-22 11:05 Zhoier 阅读(306) 评论(1) 推荐(0) 编辑
摘要: 这个算法为SGI专属,并不在标准STL之列。用它来计算某数的n幂次方。这里所谓的n幂次是指自己对自己进行某种运算,达n次。运算类型可由外界指定;如果指定为乘法,就是乘幂。 版本1:乘幂 版本2:幂次方。如果指定为乘法运算,则当n >= 0时返回 x^n。 注意,"MonoidOperation"必须 阅读全文
posted @ 2018-01-21 15:22 Zhoier 阅读(258) 评论(0) 推荐(1) 编辑
摘要: 版本1: 版本2: 算法partial_sum用来计算局部总和。他会将 *first 赋值给 *result,将 *first 和 *(first+1) 的和赋值给 * (result + 1),以此类推。注意,result可以等于 first,这使我们得以完成就地计算。在这种情况下它是一个质变算法 阅读全文
posted @ 2018-01-21 15:05 Zhoier 阅读(373) 评论(0) 推荐(1) 编辑
摘要: 版本1: 版本2: 算法inner_product 能够计算[first,last)和[first2, first2 +( last1 - first1))的一般内积。注意,你一定得提供初值init。这么做的原因之一是当[first,last)为空时,仍可以获得一个明确定义的结果。如果你想计算两个v 阅读全文
posted @ 2018-01-21 13:31 Zhoier 阅读(629) 评论(0) 推荐(1) 编辑