
算法拾遗
文章平均质量分 91
snbsczw
欲说还休,欲说还休,却道天凉好个秋
展开
-
字典树-数组指针实现+数组实现
提出问题给定一个字符串集合W,然后询问该集合中是否存在字符串S。eg:W={“acd”,“bcd”,“abcd”,“abcde”,“abce”,“abbce”,“accde”,“abbcc”,“adcc”},S = “abbce”,上述问题要解决的就是W中是否存在S?解决问题从最简单的暴力出发最简单的思路自然是拿S和W中的每一个字符串比较,如果有相等的就代表W中存在S,否则不存在。这个思路的时间复杂度是多少呢?首先,遍历字符集W需要O(n),然后拿S和W中的每一个字符串比较,时间复杂度也是O(原创 2021-07-27 11:35:52 · 311 阅读 · 0 评论 -
线段树保姆级教程
#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>using namespace std;int a[55555];int f[205555];int n;int t;void _build(int l,int r,int now){ if(l==r) { f[no原创 2017-08-23 17:48:48 · 246 阅读 · 0 评论 -
快速幂&矩阵快速幂
快速幂:举个栗子; 想求3的13次方。 把13写成二进制形式 1101 从右往左 如果第i位是1,就把它看成3的i次方 上边就可以看成是3的1次方,3的4次方,3的8次方。 把这些乘起来,正好是3的13次方。 也就是说本来循环13次,现在循环4次就行了。 然后一个问题就是每一位上的3的i次方怎么求, 这个可以在从右向左遍历的时候设一个标示值,初值设为1。每向左遍历一位,标示值乘原创 2017-09-21 16:40:28 · 242 阅读 · 0 评论