专栏文章

8.17

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

文章操作

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

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

T1

题目大意:

有 n 个元素,每个元素的值不超过 k,有m 次操作,每次指定两个编号,需这两个编号的元素值相等,求最少修改多少个元素的值,才能满足所有要求。

原思路:

看并查集中两个数的祖先是否相等,相等说明颜色一样,如果不相等看颜色是否一样,如果一样就连边,不一样改的次数加一。

正解:

通过样例可以发现需要从连通块入手。 将统一连通块的数分为一组,出现最多颜色的作为目标颜色,这样就可以做到最小改动统计每一组就行了。

T2

题目大意:

给定n个元素,按照一个指定的顺序摧毁数组中的元素。每次摧毁一操作结束后,需要计算当前剩余未被摧毁的元素中和最大的连续子序列,若剩余元素为空,最大和为 0。

原思路:

线段树维护三个数组,L:左边和最大的连续子序列,R:右边和最大的连续子序列,max:本段和最大的连续子序列,在更新L、R的时候,直接赋值为区间的最大的连续子序列,就错了,可能最大的连续子序列就是区间和,所以需要延伸。

正解:

线段树维护四个数组,L:左边和最大的连续子序列,R:右边和最大的连续子序列,max:本段和最大的连续子序列,s:区间总和。
每次删除将这些数组标为一个极小值。
更新的时候要注意, max可能是右区间左边和最大的连续子序列+左区间右边和最大的连续子序列、左区间最大的连续子序列、右区间最大的连续子序列中的最大值。 L可能就是左右区间和,所以需要延伸,R同理。

T3

题目大意:

有n个元素,m次操作,每次操作将一个区间所有元素记为给定一区间中的编号(已记录或与编号相同不改变)。

原思路:

用一个队列记录未标记的数,用树状数组记录这个区间有多少个数已被标记,每次操作找队列中符合要求的数,标记,这个数的树状数组加1,如果不符合要求,就放到最后 直到区间内已标记个数为r-l

正解:

用并查集来优化一个一个跳,每次操作完后连到下一个数,这样就可以减少没必要的更新,但初始化时要搞到n+1,否则会TLE。

T4

题目大意:

给定一棵n个结点的树,求每两个节点路径最大之间最小值

原思路:

暴力

正解:

用并查集来维护一个图,最值分开计算,把边存下来边权是两点的最值,边权按最值排序,每次看用左边有多少个点需经过这条边*右边有多少个点需经过这条边*边权

评论

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

正在加载评论...