上一页 1 ··· 18 19 20 21 22 23 24 25 26 ··· 39 下一页
摘要: 题目大意:给定一个由 N 个点组成的环,点有点权,现从中选出 M 个点,对于顺时针方向来说,每一段被选取的第一个点的点权不计入答案贡献,求选出的最大权值是多少。 题解:首先考虑线性的情况,设 $dp[i][j][0/1]$ 表示前 i 个点选择了 j 个点,且第 i 个点是否被选择的最优解。既然是线 阅读全文
posted @ 2019-03-09 20:44 shellpicker 阅读(156) 评论(0) 推荐(0)
摘要: 题目大意:求解 0 1 背包前 K 优解的和。 题解:首先,可知对于状态 $dp[j]$ 来说,能够转移到该状态的只有 $dp[j],dp[j w[i]]$。对于 K 优解来说,只需对状态额外增加一个维度即可。接着,考虑状态转移的过程,即:需要从 $dp[j][1...k]\rightarrow d 阅读全文
posted @ 2019-03-09 18:27 shellpicker 阅读(127) 评论(0) 推荐(0)
摘要: 题目大意:维护一个平衡树,支持插入一个数,删除小于一个值的所有数,K 大值查询,每个节点权值加减一个数。 题解:所有节点权值加减操作可以考虑直接维护一个全局标记,删除小于一个值的所有数字为一个二分的过程,复杂度为 $O(logn)$,具体做法为:若当前子树根节点权值小于 X,则直接删除整颗左子树,继 阅读全文
posted @ 2019-03-07 21:40 shellpicker 阅读(177) 评论(0) 推荐(0)
摘要: 题目大意:给定一个长度为 N 的序列,将序列划分成若干段,保证每段之和不超过 M,问所有段的最大值之和最小是多少。 题解:设 $f[i]$ 表示前 i 个数满足上述条件的最优解,显然有状态转移方程$$f[i]=min\{f[j]+max_{j+1\le k \le i}\{a[k]\}\}$$,发现 阅读全文
posted @ 2019-03-05 07:35 shellpicker 阅读(272) 评论(0) 推荐(0)
摘要: 题目大意:给定一棵 N 个节点的树,点有点权,要求回答 M 个询问,每次询问点 u 到点 v 的简单路径(链)上权值第 K 小是多少。 题解:学习到了树上主席树。 主席树维护序列时,每次将后一个点的树建立在前一个点的树上,由此构成一个前缀和,并利用可以在线段树上二分的性质来求 K 小值。树上主席树维 阅读全文
posted @ 2019-03-04 09:26 shellpicker 阅读(248) 评论(0) 推荐(0)
摘要: 题目大意:给定 N 个点的图,点有点权,初始有一些无向边,现在有 Q 个询问,每个询问支持动态增加一条无向边连接两个不连通的点和查询第 X 个点所在的联通块中权值第 K 大的是哪个点。 题解:学会了平衡树的启发式合并。 以每个点建立一棵平衡树,需要加边时则合并两个点对应的平衡树,启发式的思想在于合并 阅读全文
posted @ 2019-03-03 18:38 shellpicker 阅读(223) 评论(0) 推荐(0)
摘要: 题目大意:维护带修改区间 K 小值。 题解:学习到了树状数组套权值线段树。 主席树,即:可持久化权值线段树,支持维护静态区间的 K 小值问题,其核心思想是维护 N 棵权值线段树,每个线段树维护的是序列 [1,i] 的权值,并根据可持久化思想使得空间复杂度维持在 $O(nlogn)$。 树状数组套权值 阅读全文
posted @ 2019-03-02 21:39 shellpicker 阅读(354) 评论(0) 推荐(1)
摘要: 题目大意:给定一个 N 个数组成的序列,给定一个 T,求有多少个区间满足$\sum_{i=l}^ra[i]sum[r] T$,即:维护 sum 数组中的每个数,前面有多少数满足以上关系式。直接用平衡树维护即可。 代码如下 cpp include using namespace std; const 阅读全文
posted @ 2019-03-01 22:48 shellpicker 阅读(216) 评论(0) 推荐(0)
摘要: 题目大意:给定一个 N 个点的序列,求有多少个区间满足$\oplus_{i=l}^ra[i]=\sum\limits_{i=l}^ra[i]$。 题解: 小结论:$a\oplus b=a+b\rightarrow a\&b=0$。 对每个点来说,考虑向右延伸能够满足条件的右端点的位置,显然右端点的位 阅读全文
posted @ 2019-03-01 21:51 shellpicker 阅读(179) 评论(0) 推荐(0)
摘要: 题目大意:给定 N 个数字组成的序列,求刚好拥有所有 M 种数字的最短区间。 题解:双指针算法是一种对于暴力的优化算法,对于这道题来说,一个显然的暴力是:对于序列中每一个位置 pos,计算出这个位置右边恰好满足条件的位置 f[pos],时间复杂度为 $O(n^2)$。考虑对于每一个位置的计算位置,计 阅读全文
posted @ 2019-03-01 21:13 shellpicker 阅读(384) 评论(0) 推荐(0)
上一页 1 ··· 18 19 20 21 22 23 24 25 26 ··· 39 下一页