2022.8 做题记录

其实不能说是「做题记录」。我是老(ju)年(ruo)选手,马上就完全退役了,所以就口胡一些题目当作枯燥的高中文化课生活之余的思维体操辣!

基本没有代码捏

https://ac.nowcoder.com/acm/problem/21125

题意
给定定值 $k$, 维护一个数据结构,支持:
  1. 插入一个区间 \([l, r]\).
  2. 删除一个区间 \([l, r]\).
  3. 对于给定的 \(x\) ,回答有多少个区间含有 \(x+kt, t\in \Z\).
题解
  • \(k=0\) 的时候相当于询问多少个区间 \([l, r]\) 满足 \(l\leq x\leq r\),用差分树状数组维护一下区间的 +1 -1,每次查询的时候直接查询 \(x\) 位置的树状数组值就可以。

  • 如果 \(k\neq 0\),我们发现 \(x+kt\) 这个式子无论 \(t\) 取何值,在 \(\mod k\) 的意义下都是相等的。因此转化为维护膜意义下的区间,查询 \(x\mod k\)。对于每个区间 \([l, r]\),令 \(l'=l\mod k, r'=r\mod k\),根据 \(l',r'\) 的大小关系进行区间的修改。为了避免出现 \(0\) 的情况,我们把取膜后的值均 +1 即可。

https://ac.nowcoder.com/acm/problem/18391

题意
给定一颗 $n$ 个节点的边权为 1 的树,每个节点有一个颜色 $c_i$。

\(q\) 个询问,每次给出两个颜色 \(x, y\),问从任意一个颜色为 \(x\) 的节点到颜色为 \(y\) 的节点的最长距离。

题解

结论是,若存在答案,那么无论是颜色为 \(x\) 还是 \(y\) 的答案节点一定是所属颜色所有节点中的距离最大的两个点的其中一个点。证明就懒得证了,思路就是反正反证法

找直径不需要 \(O(n^2)\) 枚举,打一下擂台就行。

值域比较大,离散化一下。

posted @ 2022-08-12 15:41  wuwenhao  阅读(28)  评论(0)    收藏  举报