摘要: 区间修改和区间查询的话,想到线段树,每次区间的内的操作就用区间长度减去已经亮了的灯的数量。然后将懒标记反转即可。 点击查看代码 #include <iostream> #include <stack> #include <cmath> #include <algorithm> #include <s 阅读全文
posted @ 2024-10-12 15:51 Aloongyy 阅读(17) 评论(0) 推荐(0)
摘要: 堆优化版:通过定义一个最小堆来实现普通版本中的查找操作 点击查看代码 #include <iostream> #include <stack> #include <cmath> #include <algorithm> #include <set> #include <vector> #includ 阅读全文
posted @ 2024-10-12 09:36 Aloongyy 阅读(30) 评论(0) 推荐(0)
摘要: Dijkstra算法,用途:可以算出一个顶点到其余各顶点的最短距离,解决有权路径问题。时间复杂度O(n*n)。 核心思想:从起始点开始,采用贪心算法的策略,每次遍历到距离最近且为访问的顶点邻接节点,直到扩展到终点为止。 点击查看代码 #include <iostream> #include <sta 阅读全文
posted @ 2024-10-12 09:18 Aloongyy 阅读(92) 评论(0) 推荐(0)
摘要: kmp算法:扫描字符串A,并且更新可以匹配到B的什么位置。时间复杂度O(n)。 P[i]表示当前模式串在该位置匹配冲突时,应该将模式串的哪一位与此对齐。 总之就是扫描字符串A,并更新2可以匹配到什么位置 点击查看代码 #include <bits/stdc++.h> #define ios ios: 阅读全文
posted @ 2024-10-11 15:07 Aloongyy 阅读(25) 评论(0) 推荐(0)
摘要: 题意:对一个点进行修改,然后进行查询符合条件的子串。思路:单点修改+查询,很容易想到线段树,用线段树来存,考虑每一次修改后进行合并,然后看能不能合并于是用3个数组来表示,分别表示该节点编号下的区间内最长的01串的前后缀的长度。 点击查看代码 #include <iostream> #include 阅读全文
posted @ 2024-10-11 14:59 Aloongyy 阅读(40) 评论(0) 推荐(0)