算法基础学习
ZY_discovery
云下也许有鱼
展开
-
Catalan数
事情是这样的,某天在洛谷题库乱翻题写,突然看到一道普及-的东西【P1044 栈】,觉得啊,可以娱乐一下身心,就点开了,自己水了一下之后,照例围观题解,发现了这是“卡特兰数”的裸题【在此之前也听说过似乎】,然后一脸憧憬地去百度,get以下内容:Catalan数是用来解决以下类似问题的:n个1和n个0组成一2n位的2进制数,要求从左到右扫描,1的个数不小于0的个数,试求满足这条件的数有多少原创 2017-03-18 13:45:22 · 519 阅读 · 0 评论 -
NIM游戏&SG函数
Nim游戏Nim游戏定义Nim游戏是组合游戏(Combinatorial Games)的一种,准确来说,属于“Impartial Combinatorial Games”(以下简称ICG)。满足以下条件的游戏是ICG(可能不太严谨):1、有两名选手;2、两名选手交替对游戏进行移动(move),每次一步,选手可以在(一般而言)有限的合法移动集合中任选一种进行移动;3、对于游戏的任何一种可能的转载 2017-03-15 20:03:57 · 418 阅读 · 0 评论 -
LCT维护问题
扯淡(前言)众所周知LCT可以支持关于点权的链修改,换根,LINK,CUT和查询链信息操作,但是总有那么些神犇(毒瘤)出题人会让你在支持链修改,换根,LINK和CUT操作的情况下去支持子树查询,或者维护关于边权的链修改,换根,LINK,CUT和链查询。网上似乎讲解这两种LCT写法的blog比较少或者不怎么能搜到?总之我来写一发(LCT基础知识回顾)【我自己做了一个ppt,ftp里面有,转载 2017-01-16 10:35:53 · 1059 阅读 · 3 评论 -
线段树的一些脑残东西例如向上回溯延迟更新的恶心东西
此题题意很好懂: 给你N个数,Q个操作,操作有两种,‘Q a b ’是询问a~b这段数的和,‘C a b c’是把a~b这段数都加上c。 需要用到线段树的,update:成段增减,query:区间求和 介绍Lazy思想:lazy-tag思想,记录每一个线段树节点的变化值,当这部分线段的一致性被破坏我们就将这个变化值传递给子区间,大大增加了线段树的效率。 在此通转载 2016-08-08 21:23:28 · 423 阅读 · 3 评论 -
一篇讲左偏树的好文章~
传送门:http://blog.csdn.net/iaccepted/article/details/6748038二、左偏树的定义和性质.......................................................................................... 22.1 优先队列,可并堆.....................转载 2016-08-07 21:43:34 · 3219 阅读 · 0 评论 -
来来来来吃一发STL
What is stack?翻译过来就是就是“栈”撒~使用stack显然要调用头文件然而stack 模板类需要两个模板参数,一个是元素类型,一个容器类型,但只有元素类型是必要的,在不指定容器类型时,默认的容器类型为deque。定义stack 对象的示例代码如下:stack s1;stack s2;然后咱来看看stack的一些基本操作:入栈,如例:s.原创 2016-08-26 20:51:49 · 440 阅读 · 0 评论 -
素数判定
前言:应该说是很久前之前制定的打怪计划,但是由于各种原因迟迟没有开始动手,现在这里反思一下。。。关于素数判定的基础知识:)(1)素数判定有一个很基础很基础的写法,应该都知道的,就是求n以内的素数的时候,我们可以知道一个数i,它的因子数目一定是小于或等于sqrt(i)的,那么由此我们可以很简单的写出一段简短且简短且容易的代码:如下#include#include#includ原创 2016-09-12 20:54:19 · 462 阅读 · 2 评论 -
迭代加深搜索
迭代加深搜索,实质上是限定下界的深度优先搜索。即首先允许深度优先搜索K层,若没有发现可行解,再将K+1后重复以上步骤搜索,直到搜索到可行解。在迭代加深搜索的算法中,连续的深度优先搜索被引入,每一个深度约束逐次加1,直到搜索到目标为止。这样可以看出重复搜索了好多。但是它的好处在于:1.空间开销小 每个深度下实际上是一个深度优先搜索,不过转载 2016-07-23 20:29:42 · 1301 阅读 · 1 评论 -
网络流之SAP算法学习
网络流之SAP算法学习终于决定开始学习网络流了=.=>那本书讲了很多关于求最大流的算法,然后我就只挑了一种传说中神奇的SAP算法学习。首先引入几个新名词:1、距离标号:所谓距离标号 ,就是某个点到汇点的最少的弧的数量(即边权值为1时某个点到汇点的最短路径长度)。设点i的标号为level[i],那么如果将满足level[i]=level[j]+1的弧(i,j)叫做允许弧转载 2016-07-15 20:07:58 · 351 阅读 · 0 评论 -
C++ STL set和multiset的使用
C++ STL set和multiset的使用std::set s;那个s这个对象里面存贮的元素是从小到大排序的,(因为用std::less作为比较工具。)1,set的含义是集合,它是一个有序的容器,里面的元素都是排序好的,支持插入,删除,查找等操作,就 像一个集合一样。所有的操作的都是严格在logn时间之内完成,效率非常高。 set和multiset的区别是:set插入的元素不转载 2016-07-14 16:05:50 · 269 阅读 · 0 评论 -
深度理解链式前向星
我们首先来看一下什么是前向星.前向星是一种特殊的边集数组,我们把边集数组中的每一条边按照起点从小到大排序,如果起点相同就按照终点从小到大排序,并记录下以某个点为起点的所有边在数组中的起始位置和存储长度,那么前向星就构造好了.用len[i]来记录所有以i为起点的边在数组中的存储长度.用head[i]记录以i为边集在数组中的第一个存储位置.那么对于下图:转载 2016-07-09 08:45:45 · 1577 阅读 · 0 评论 -
合并果子。。。(脑抽ing~)
#include#include#includeusing namespace std;const int maxn=10000+10;int a[maxn];int main(void){ int n,len=0,ans=0; cin>>n; for(int i=1;i scanf("%d",&a[i]);原创 2016-06-26 19:13:34 · 343 阅读 · 0 评论 -
错误错误错误错误犯蠢犯蠢犯蠢。。。。[新增某些知识点]
1:赋值符号与等于。。。。。原创 2016-06-27 16:39:48 · 407 阅读 · 2 评论 -
二叉排序树~
#include#include#includeusing namespace std;int da[400000];struct tree{ int l,r,k; tree(){ l=r=k=0; }}a[400000];int n,cnt;void insert(int s,int p){ if(a[p]原创 2016-06-27 16:45:30 · 211 阅读 · 0 评论 -
字典树
#include#include#include #include #include using namespace std;struct node{ int count; char word[30]; struct node *next[30]; node(){ count=0; memset原创 2016-06-27 21:22:07 · 215 阅读 · 0 评论 -
图广搜。。深搜自行改编。。。
#include#include#include#include using namespace std;int a[10000][10000],t,n,p[10000],d[10000];void bfs(int x){ int h=0,l=1;//h为队首,l为队尾 d[1]=x;p[x]=1;//输入进队列做队首,标记 while(h<l){//h大于l时跳出循环原创 2016-06-29 14:31:22 · 283 阅读 · 0 评论 -
DP-斜率优化初探 之 记录
初探这种东西。。曾二dalao今天在讲国集dalao的论文《浅谈决策单调性动态规划的线性解法》by-冯哲。。然后先慢慢吃下第一步:斜率优化。其实以前GBZ也讲过,不过没怎么细听。。。然后还要看后面一坨诡异的东西:比如凸包上面二分,CDQ分治来搞之类的。。。SMAWK算法果断掉线啊啊啊啊(显然一下午烦的死然后和天神一起去思考人生了。。。)本篇博客其实是摸鱼,是来推荐一篇很棒的博客的。。。。在此附上链接原创 2017-06-08 21:08:56 · 737 阅读 · 0 评论