专栏文章
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同理。
每次删除将这些数组标为一个极小值。
更新的时候要注意, max可能是右区间左边和最大的连续子序列+左区间右边和最大的连续子序列、左区间最大的连续子序列、右区间最大的连续子序列中的最大值。 L可能就是左右区间和,所以需要延伸,R同理。
T3
题目大意:
有n个元素,m次操作,每次操作将一个区间所有元素记为给定一区间中的编号(已记录或与编号相同不改变)。
原思路:
用一个队列记录未标记的数,用树状数组记录这个区间有多少个数已被标记,每次操作找队列中符合要求的数,标记,这个数的树状数组加1,如果不符合要求,就放到最后
直到区间内已标记个数为r-l
正解:
用并查集来优化一个一个跳,每次操作完后连到下一个数,这样就可以减少没必要的更新,但初始化时要搞到n+1,否则会TLE。
T4
题目大意:
给定一棵n个结点的树,求每两个节点路径最大之间最小值
原思路:
暴力
正解:
用并查集来维护一个图,最值分开计算,把边存下来边权是两点的最值,边权按最值排序,每次看用左边有多少个点需经过这条边*右边有多少个点需经过这条边*边权
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...