树状数组 (Binary Index Tree, BIT) 用于解决这样一个问题:给定数组 a[n], 并且要求 w 次修改数组,现有 q 次区间查询,区间查询要求返回任意给定区间之和。 如果采用暴力方法,一次修改需要 \(O(1)\) 的时间复杂度,一次查询需要 \(O(n)\) 的时间复杂度,总 ...
分类:
编程语言 时间:
2021-01-16 11:53:30
阅读次数:
0
第一种:set集合,去重数组 set集合,元素无序,不重复 Python: arr=['a','b','c'] el=set(arr) print(el) 第二种: 放到一个字典里作为key def getNonRepeat(data): return list(dict.fromKeys(data ...
分类:
其他好文 时间:
2021-01-15 12:01:05
阅读次数:
0
Aimee 记忆化搜索非常好写, 尤其是从一个朴素的搜索开始改造。 sum是要记录的,但是没必要存在状态里 直接统计一下当前节点是第几步之后的方案数 虽然说时间复杂度没有朴素的优美 但是不会MLE啊 #include<iostream> #include<cstdio> #include<cstri ...
分类:
其他好文 时间:
2021-01-12 11:00:15
阅读次数:
0
正题 题目链接:https://www.luogu.com.cn/problem/P3649 题目大意 一个字符串,求最大的回文串长度×出现次数 解题思路 构建出$\text$然后统计一下每个节点作为后缀的次数,$fail$树上上传一下信息就好了,时间复杂度$O(n)$。 当然也可以$\text+\ ...
给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值 target,返回?[ 1, 1]。 进阶: 你可以设计并实现时间复杂度为?O(log n)?的算法解决此问题吗? 示例 1: 输入:nums = [5,7,7 ...
分类:
编程语言 时间:
2021-01-08 11:34:24
阅读次数:
0
算法的空间复杂度通过计算算法所需的存储空间实现, 算法的空间复杂度的计算公式记作:S(n) = O(f(n)), 其中,n 为问题的规模,f(n) 为语句关于 n 所占存储空间的函数。 通常,我们都是用 “时间复杂度” 来指运行时间的需求,是用 “空间复杂度” 指空间需求。 当不用限定词地使用 “复 ...
分类:
编程语言 时间:
2021-01-06 12:14:18
阅读次数:
0
二分查找可以理解为折纸,对半折。 主要:你需要主要是二分查找的数据是有序的。 它的时间复杂度:log2(n) 对应的算法师折半查找法: 代码: #include <stdio.h> #include <stdlib.h> #define keyType int typedef struct { ke ...
分类:
其他好文 时间:
2021-01-06 11:59:08
阅读次数:
0
原题链接 KMP+标准化+最大最小表示法 错误思路: 看到这题的第一反应是破环成链思想,枚举它能循环得到的字符串...算了下时间复杂度大概率TLE,看了别人的提示才反应过来是标准化... 正确思路: 像这种一种表示多种形态的字符串大概率用标准化了,我们用最小最大表示法求最大或最小值,用set或map ...
分类:
其他好文 时间:
2021-01-05 10:48:42
阅读次数:
0
快速幂运算 HDU2035 求 http://acm.hdu.edu.cn/showproblem.php?pid=2035 题目是很简单的,因为b也不大所以时间复杂度为n的算法也能ac #include <iostream> using namespace std; int a, b; int p ...
分类:
其他好文 时间:
2021-01-01 12:58:37
阅读次数:
0
归并排序 利用递归实现分治。每次排序时间复杂度是O(N),一共需要 LogN 次。 #include <stdlib.h> #include <time.h> #define size 100 static int n[size]; static int t[size]; void msort(in ...
分类:
编程语言 时间:
2020-12-31 12:14:15
阅读次数:
0