题目描述 一个n*m矩阵由n行m列共n*m个数排列而成。两个矩阵A和B可以相乘当且仅当A的列数等于B的行数。一个N*M的矩阵乘以一个M*P的矩阵等于一个N*P的矩阵,运算量为n*m*p。 矩阵乘法满足结合律,A*B*C可以表示成(A*B)*C或者是A*(B*C),两者的运算量却不同。例如当A=2*3 ...
分类:
其他好文 时间:
2020-05-08 09:53:24
阅读次数:
76
"Link" 给一个合法的括号序列。求满足以下条件的染色方案。 1.一个括号可以染红色、蓝色或不染色 2.一对匹配的括号需要且只能将其中一个染色 3.相邻两个括号颜色不能相同(但可以都不染色) 求符合条件的染色方案数(对1000000007取模) 输入: 一行,表示括号序列 输出: 一个数表示方案数 ...
分类:
其他好文 时间:
2020-05-08 09:30:46
阅读次数:
48
问题描诉: 给定有n个整数(可能为负整数)组成的序列a1,a2,...,an,求该序列连续的子段和的最大值和区间。 如果该子段的所有元素和是负整数时定义其最大子段和为0。 输入:1 -2 4 5 -2 8 3 -2 6 3 7 -1 输出:32 , [3 , 11] 蛮力法: 时间:O(n3) #i ...
分类:
其他好文 时间:
2020-05-07 13:52:11
阅读次数:
85
题目描述: 分析:虽然是求区间和,但数组是不可变的,不可变 意思是 不涉及线段树更新操作。因此可以不使用线段树这种复杂的数据结构,对于该题不使用线段树效果更好,初始化是O(n)的复杂度,以后每次调用只需要O(1)的复杂度。 // 不使用线段树的解决方案 class NumArray { privat ...
分类:
编程语言 时间:
2020-05-07 00:46:03
阅读次数:
63
本地搬运~ 关于树状数组的学习,强烈推荐这个视频:https://www.bilibili.com/video/av26371798?from=search&seid=2141442207537065040 1:树状数组:查询和修改复杂度都为log(n)的数据结构,本身可用于单点修改区间查询,加入辅 ...
分类:
编程语言 时间:
2020-05-06 22:06:50
阅读次数:
95
``` //单点修改 pushup //查询区间内的最大字段和 #include #include #include #include using namespace std; const int N = 500010; int n, m; int w[N]; struct Node { //端点 ... ...
分类:
其他好文 时间:
2020-05-06 20:03:08
阅读次数:
53
树状数组简单来看就是一个维护前缀和的数据结构,它相当于线段树去掉了所有的右子树,需要查询时,通过信息拼接来达到查询目的,基础应用为 **(单点更新,区间查询)** **(区间更新,单点查值)** (多了个差分) **(区间修改,区间查询)** (通过数学推导得出我们需要维护两个树状数组) 具体内容参 ...
分类:
编程语言 时间:
2020-05-05 23:35:57
阅读次数:
76
题目: 解答: 就很简单的遍历一遍...中间判断数字是否连续。 1 class Solution { 2 public: 3 vector<string> summaryRanges(vector<int>& nums) 4 { 5 vector<string> ans; 6 for(int i = ...
分类:
编程语言 时间:
2020-05-05 18:02:35
阅读次数:
60
$考虑每个区域可行的区间$ $x[1]=s[1]\ \ y[1]=s[1]+g[1]$ $x[i]=max(x[i 1] 1,s[i]),y[i]=min(y[i 1]+1,s[i]+g[i])$ $然后这样能确保每一个区间都满足前面的区间,但不意味前面的区间满足后面的区间$ $倒过来也做一次,之后 ...
分类:
其他好文 时间:
2020-05-05 17:48:05
阅读次数:
43
分块初始化: int a[50005];//原始序列 int l[2000];//第i个块的左区间端点 int r[2000];//第i个块的右区间端点 int pos[50005];//第i个点属于第几个块 int n; scanf("%d",&n); int dis=sqrt(n);//每一块的 ...
分类:
其他好文 时间:
2020-05-05 12:46:01
阅读次数:
46