摘要: dp[i][a[j]]以每一个a[j]为结尾时上升子序列的长度为i:状态转移出来了:if(a[j]>a[k])dp[i][a[j]]+=dp[i-1][a[k]];满足条件则可以转移。可惜时间超限,分析状态的转移过程,到该状态即为前面的所有小于该数的状态得来,考虑用树状数组来维护即可。 点击查看代码 阅读全文
posted @ 2024-10-12 19:22 Aloongyy 阅读(25) 评论(0) 推荐(0)
摘要: 考虑到有乘法和加法,因此要考虑一个优先的,考虑乘法优先,子节点的懒标记mul更新为mulm而add为addm+a。 点击查看代码 #include <iostream> #include <stack> #include <cmath> #include <algorithm> #include < 阅读全文
posted @ 2024-10-12 16:34 Aloongyy 阅读(12) 评论(0) 推荐(0)
摘要: 区间修改和区间查询的话,想到线段树,每次区间的内的操作就用区间长度减去已经亮了的灯的数量。然后将懒标记反转即可。 点击查看代码 #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)