专栏文章

10.18 CSP-S模拟赛

个人记录参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@minhdscy
此快照首次捕获于
2025/12/02 02:26
3 个月前
此快照最后确认于
2025/12/02 02:26
3 个月前
查看原文

T1

只考虑连 auava_u \leq a_v 的边,把所有边按照边权从小到大排序,跑一遍 dfs 求出最长路即可。

T2

你发现这种要求满足限制的题,且可以通过 xrxl=dix_r - x_l = d_i 构造关系。直接考虑差分约束,如果说出现当前 u,vu,v 距离与之前所求矛盾则无解。根据 {xrxldixlxrdi\begin{cases}x_r - x_l \leq d_i \\ x_l - x_r \leq -d_i\end{cases} 建边。

T3

T4

首先所有被其它区间完全覆盖的区间一定是要删的。
将所有线段左端点第一关键字右端点第二升序排序,考虑 dp。记 fi,jf_{i,j} 表示前 ii 个中选了 jj 个删除,钦定 ii 不删的最长区间覆盖。转移枚举上一个没删的区间。
fi,j=maxk<i{fk,j(ik1)+rimax(li,rk)}f_{i,j} = \max\limits_{k < i}\{f_{k,j - (i - k - 1)} + r_i - \max(l_i,r_k)\}
显然我们需要分讨后面的 max\max
  • li>rkl_i > r_k
    那么有 fi,j=maxk<i{fk,k(ij1)+rili}f_{i,j} = \max\limits_{k<i}\{f_{k,k - (i - j - 1)} + r_i - l_i\},那么我们只需要知道 fk,k(ij1)f_{k,k - (i - j - 1)} 对于每个 ij1i - j - 1 的最大值即可。
  • li<rkl_i < r_k
    那么有 fi,j=maxk<i{fk,k(ij1)+rirk}f_{i,j} = \max\limits_{k<i}\{f_{k,k - (i - j - 1)} + r_i - r_k\},同理的我们需要维护 fk,k(ij1)rkf_{k,k - (i-j-1)} - r_k 的最大值。
那么只需要单调队列维护第二种情况的同时更新第一种即可。

评论

0 条评论,欢迎与作者交流。

正在加载评论...