随笔分类 - 数据结构&模板
摘要:题目链接:https://www.luogu.org/problemnew/show/P1484 题意很清晰很好懂,做起来就难了。 数据范围小的化可搜索可dp, But数据这么大是不可能的了,较难贪心(a[i]或左加右只选一个最大的)+堆(每次取出最大的) 完。
阅读全文
摘要:题目链解:https://www.luogu.org/problemnew/show/P1631 二分枚举判断答案几乎是无敌的存在几十秒求出有m次操作的最值问题! 这题刚看完有点蒙,两个for循环的话不但爆空间,也爆时间啊! 看了大佬解释后,发现有3种做法,二分答案或优先队列(堆),还有一种类似数据
阅读全文
摘要:题目链接:https://www.luogu.org/problemnew/show/P2661 一道很好的思维题,要思考怎么模拟成环的这个操作并且把它走过的距离保存下来,类似并查集父结点的思想。 单纯暴力会超时(加上剪枝也超时) 暴力超时代码,80分 AC代码 完。
阅读全文
摘要:一种非常厉害的存图的数据结构! 本质:模拟链表的操作,链式存储图。(2,3都可以模拟链表的操作,替代链表) (1)二维数组存图:Map[x][y],一维代表出发点,二维代表它所连接的所有点。(不连接设为inf) (2)链式前向星存图:head[x]相当于一维代表了出发点,之后T[i].next一条链
阅读全文
摘要:hdu2544模板题目:http://acm.hdu.edu.cn/showproblem.php?pid=2544 迪杰斯特拉 初级版:邻接数组表示(和Prim极为相似!)(无向图即双向的) 中级版:链式前向星 高级版:链式前向星+堆优化(其实不管是否优化,最开始的源点操作放在循环里与循坏外都是可
阅读全文
摘要:51nod1212最小生成树模板题:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1212 克鲁斯卡尔(加边法):先取最小的边,在判断是不是一个集合(不是舍去,是加上) 普里姆(加点法):先已经判断了不是一个集合,再从不是
阅读全文
摘要:有两种next求法 模板题,hduoj2087剪花布条 数据比较水,可以Bf暴力匹配,Kmp匹配,string查找函数水过 完。
阅读全文
摘要:题目链接:https://www.luogu.org/problemnew/show/P1090 分析和思路: 贪心,每次取最小的两个,再插入一个使之有序,可以用优先队列或者堆的方法写。 优先队列 完。
阅读全文
摘要:问题:给你一些数,请在这些数中找到一个区间,使得区间里每一个元素的和大于或等于给定的某个值。 题目很简单并不难懂,很容易想到双重循环,枚举区间起点和终点,然后每一次都求一次和,再和给定的数作比较,效率低下。 尺取法与它的模拟思路类似,都是寻找一个区间的起点和终点,但是一遍过高效的多。 尺取法算法过程
阅读全文
摘要:题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1175 分析和思路: 可能最先想到的就是把l,r区间的数拿出来排序后得到答案,但多次频繁操作时间复杂度太高,这时候强大的数据结构主席树就发挥出它强大的作用,这就是主
阅读全文
摘要:题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1174 分析和思路:没什么难理解的。。(暴力就不再说了这题可以水过。。) rmq(本质dp) 预处理: 设A[i]是要求区间最值的数列,F[i, j]表示从第i个数
阅读全文
摘要:递推思路: 斐波那契(Fibonacci)数列 从第三项开始,每一项都是前两项之和,Fn=Fn− 1 +Fn − 2。(其中F0=0,F1=1是初始值我称为初始矩阵也即递归出口,其实就是一列初始已知条件) 我们可以把要求的第n项值Fn写成一个Fn和Fn − 1的2×1矩阵(也就是我们想要的目标矩阵)
阅读全文