dp[i] = max_{j ∈ [i-R,i-L]}( dp[j] + v(j+1,i) )。做前缀和后,对每种s[j]的值,开一个单调队列。每次将i-L入队、将i-R-1出队。用线段树维护每个队列的队首。转移时最区间最大值查询。 ...
分类:
其他好文 时间:
2020-08-17 16:57:59
阅读次数:
68
链式表: 元素的数据项: 数据域:可以是各种类型的若干个数据项 指针域:指向下一元素 由若干个元素通过指针域连接在一起形成链式表。 不带头节点:第一个元素的数据域存储的就是有效的数据。 插入删除时可以会修改头节点指针,参数需要使用二维指针。 同时需要获取到上一个节点的指针,而头节点没有上一个节点,因 ...
分类:
其他好文 时间:
2020-08-07 00:30:13
阅读次数:
192
队列:先进先出 头文件:<queue> 基本操作: queue<Type>q; //定义队列,Type可以系统定义的数据类型,也可以是自己定义的结构体类型 q.push(item); //把item放入队列的尾部 q.front(); //返回队首元素,但不会删除 q.pop(); //删除队首元素 ...
分类:
其他好文 时间:
2020-07-31 12:28:58
阅读次数:
87
线程池工作流程: 1、如果正在运行的线程数量小于 corePoolSize,那么马上创建线程运行这个任务 2、如果正在运行的线程数量大于或等于 corePoolSize,那么将这个任务放入队列 3、如果这时候队列满了,而且正在运行的线程数量小于 maximumPoolSize,那么还是要创建非核心线 ...
分类:
编程语言 时间:
2020-07-29 00:47:33
阅读次数:
96
###思路 这个题一看和入度扯上关系就是明显的topo了。 对于最优情况,直接维护小根堆,贪心即可。 对于最劣情况,显然直接维护大根堆然后贪心是错误的(反例见Luogu题解),所以每次要取出所有能拓展的节点,依次加入队列topo即可。这里注意当连到的点比当前最大值大时,压入大根堆, 否则加入队列。 ...
分类:
其他好文 时间:
2020-07-28 10:09:43
阅读次数:
65
多源bfs 1.算法分析 多源bfs就是一开始有很多的源头,不只一个源点。处理的方法:一开始直接把所有源点放入队列;或者建立一个虚拟源点,虚拟源点到每个源点的距离为0 2.例题 acwing173矩阵距离 给定一个N行M列的01矩阵A,A[i][j] 与 A[k][l] 之间的曼哈顿距离定义为: d ...
分类:
其他好文 时间:
2020-07-27 13:41:08
阅读次数:
59
双端队列广搜 1. 算法分析 双端队列广搜算法只适用于边权只有0和1的情况,本质上是对dijkstra堆优化版本的再次优化。由于dijkstra堆优化版本每次要把最小值从队头拿出,然后更新其他值后插入队列。而当边权只有0和1时,当处理的边权为0,那么更新完仍然为最小值,直接放入队头;为1则插入队尾。 ...
分类:
其他好文 时间:
2020-07-27 13:40:39
阅读次数:
68
滑动窗口 Problem:https://ac.nowcoder.com/acm/problem/50528 题解: 单调队列裸题。 单调队列维护区间最值,对于单调队列有两种操作: 插入,新元素从队尾插入后会破坏队列中单调性则删除队尾元素,知道找到插入后不会破坏单调性的位置为止,再将其插入队列。 获 ...
分类:
其他好文 时间:
2020-07-26 19:38:38
阅读次数:
70
RabbitMq高级特性之延迟队列 消息进入队列后不能立即被消费,到达指定时间后才可被消费 实现 结合以下两种即可达到延迟队列 RabbitMq高级特性之TTL过期时间 RabbitMq高级特性之DLX死信队列 延迟队列小结 延迟队列 指消息进入队列后,经过一定时间后,才能被消费者消费 Rabbit ...
分类:
其他好文 时间:
2020-07-26 01:00:32
阅读次数:
87
用C/C++编写二叉树的前序遍历,中序遍历,后序遍历(递归) 使用辅助队列的层序遍历(非递归) 特别说明一下层次遍历:借助一个队列,先将二叉树根结点入队,然后出队,访问出队结点,若它有左子树,则将左子树根结点入队;若它有右子树,则将右子树树根结点入队。然后出队,访问出队结点.......如此反复,直 ...
分类:
其他好文 时间:
2020-07-23 16:22:22
阅读次数:
66