知识点讲解
文章平均质量分 74
Cynthia_wjyi
There is a hero if you look inside your heart.
展开
-
关于字符串读入的总结
字符串读入1.cin>>str; //str可为字符类型和字符串 遇见空格或换行就停止。2.scanf("%s",str); //str为字符类型 遇见空格或换行停止。3.gets(str); //str为字符类型 gets()函数将接收输入的整个字符串直到换行为止或文件结束。4.getline(cin,str); //str必须是 str原创 2015-05-30 09:54:21 · 1235 阅读 · 0 评论 -
RMQ学习总结(附带简单例题)
RMQ (Range Minimum/Maximum Query)问题含义:对于长度为n的数列A,回答若干询问RMQ(A,i,j)(i,j,返回数列A中下标在i,j里的最小(大)值,也就是说,RMQ问题是指求区间最值的问题。时间复杂度:预处理时间复杂度O(n*log(n)),查询O(1)基础:dpF[i][j]表示从第i位起,2^j个数中的最值。那么dp的初值是什么? 显然原创 2015-08-07 18:11:48 · 3323 阅读 · 1 评论 -
LCA 三种 解决方法讲解 (附加例题)
LCA(Least Common Ancestors) 即最近公共祖先,是指这样一个问题:在有根树中,找出某两个结点u和v最近的公共祖先(另一种说法,离树根最远的公共祖先)。一、在线算法ST算法 所谓在线即输入一个询问,要立即返回答案,才可进行下一次询问。 基础:dp(即rmq) 时间复杂度O(nlogn+m+n) 步骤:1.将树看作一个无向图,原创 2015-08-14 16:40:57 · 4657 阅读 · 0 评论 -
国庆上课记录
Day1数据结构(上)一.堆例1:找N个数的中位数利用一个大根堆和一个小根堆。例2:合并果子反过来哈夫曼二叉树:将值最小的放在离跟最远的地方。例3:NOIDAY2t1 BZOJ4198k叉哈夫曼树,每次取k个最小的合并 如果N-1不能整除(k-1),就补重量为0的串二.单调栈每次压入一个数时将比它大的数弹出来。例1:BZOJ 1606从左往右看每个牛能看到的牛是一段连续的区间,第p头牛,从p+1,原创 2015-10-01 10:27:58 · 889 阅读 · 0 评论 -
有关字符数组和字符串的函数
字符串可以用字符数组与字符串变量两种方式来存储,效果类似。 一、用字符数组来存储字符串: char st1[100],st2[100] ; //字符数组说明 cin>>st1>>st2; long a,b; 输入:hello, world 则st1={‘h’,’e’,’l’,’l’,’o’,’,’,’\0’} st2={‘w’,’o’,’r’,’l’,’d’,’\0} 字符’\0’转载 2015-10-11 10:39:56 · 1032 阅读 · 0 评论 -
有关lower_bound的比较函数
如果自己实现lower_bound的功能无疑是用二分实现。所以,lower_bound可以通过自定义比较函数来实现多种算法。比如,在一串数中找出比x大的数比较函数cmp1是这样定义的bool cmp1(int a,int b){return aint k=lower_bound(a+1,a+1+n,x,cmp1}-a;通过以上例子,可以明白比较函数中所要确定的范围的补集为t原创 2015-10-28 23:59:01 · 4204 阅读 · 0 评论 -
Treap学习基本入门
Treap标准学习模板1.treap的基本了解(1)splay与treap的区别Splay的旋转操作是将普通节点转到根 而treap是将根转为普通节点(2)treap的时空复杂度treap的各项操作时间复杂度均摊为O(logn)。 由于treap的指针写法容易出错,所以通常用数组代替。 通常要有以下几种: v[]——存放键值 rnd[]——存放随机出的优先级 l[],r[]——左右子树的原创 2015-12-04 17:17:03 · 2075 阅读 · 0 评论 -
KMP算法
KMP算法:指一种字符串匹配的算法。引子:其实就是根据字符串本身的性质判断若当前位置不匹配,则最少右移几位可以开始匹配。 比如字符串为babba,若最后一位不匹配则显然右移一位,两位均不可,但右移三位可以。因为前两个字符,和后两个字符相等。这样就大大减少了移动速度,匹配次数。算法具体实现过程:实现其实是一种图论的方法实现。之前的例子最后一位不成功,就要再从第三位开始比较,我们将这样的一种关系,叫做原创 2015-12-26 14:20:00 · 1485 阅读 · 1 评论