摘要:
题目大意:给定一个长度为 N 的序列,每个点有两种状态 1/0,表示占有和空闲,现支持 first fit 查询是否有一段连续的长度为 X 的空闲子序列和区间赋值操作。 题解:get到了线段树新技能。。qwq 区间赋值操作和其他线段树一样,维护标记即可。 查询是否有一段连续的长度为 X 的空闲子序列 阅读全文
摘要:
题目大意:维护一个长度为 N 的序列,支持单点修改,区间查询最长连续上升子序列的长度。 题解: 线段树维护一段区间左端点开始的 LCIS 长度,右端点开始的 LCIS 长度以及区间最优解。考虑进行合并,合并后区间的最优解可能由三部分构成,即:左区间的最优解、右区间的最优解和左区间rmx+右区间lmx 阅读全文
摘要:
题目大意:给定一个长度为 N 的序列,每次可以合并相邻的两个元素,代价是两者中较大的值,合并之后的值也为两者较大的值,求合并 N 1 次后的最小代价是多少。 题解: 除了最大值以外,每个值均只会被合并一次,合并的代价一定是这个值左边最大值和右边最大值中较小的那一个。问题转化成了如何求解每个元素左边和 阅读全文
摘要:
题目大意:给定一个长度为 N 的序列,现选出 M 个点组成一个集合,求这 N 个点到这个集合的最近距离的和是多少。 题解: 状态设计为 dp[i][j] 表示前 i 个点中选出 j 个点的最近距离和是多少,转移显然要枚举上一个选的点在哪里,即:$dp[i][j]=min(dp[k][j 1]+cos 阅读全文
摘要:
题目大意:题目过长,无法简单描述。。。 题解: 由于树网的核一定是树直径的一段,因此考虑先将直径取出,通过两次 BFS 即可。要求的东西是树上任意一点到这条取出的线段的距离的最大值,发现这个最大值有可能为三个值构成,首先是给定段到树直径的两个端点的距离,其次是树直径外的点到给的给定段的距离的最大值。 阅读全文