- 博客(9)
- 收藏
- 关注
原创 abc440d
那怎样二分呢,首先对于这道题,它一定是 x+y-1+(中间已给出数字的个数)。那么我们去找到 mid,使得 x~mid 区间中,x+y-1+(中间个数)<=mid。,找到第一个 >=x 的位置和第一个 >=mid 的位置两者相减,即是中间个数。如何去找中间个数呢,我们可以使用。这道题直接二分答案即可。
2026-01-11 21:44:49
328
原创 abc439e
警钟长鸣:不要把 insert 函数的类型写成 long long。不要把 insert 函数的类型写成 long long。不要把 insert 函数的类型写成 long long。这道题我们按 x 升序后就发现它变成了一个最长上升子序列问题,用树状数组即可快速的用 O(nlogn) 的时间复杂度过掉这道题。
2026-01-06 20:38:45
546
原创 abc438f
遍历1~n-1,若其尚未被加入,则加入这个点及其所有祖先,并维护路径若x已经加入,f(x)=f(x-1),否则暴力更新。这个就有一点难想了。建图找父亲和子树大小,并设。的个数,以0为根,则可以暴力计算f(0)。
2026-01-01 13:50:55
485
原创 abc438d
如图,我先做了一遍后缀和,再定义e[i]=g[i]+d[i + 1],其中g[i]是b的前缀和数组,d[i]是对c的前缀和数组。那么最后我们就可以用O(n)的时间复杂度枚举x,y就直接被e数组处理掉啦!先画个图:首先,1 ~ x做前缀和,x+1 ~ n也做前缀和。那最后的y+1~n呢?d题我用了N遍前/后缀和。
2025-12-31 15:00:19
320
原创 abc437f
本文提出使用线段树解决单点修改和区间查询问题。线段树节点存储四个关键值:(x+y)的最大最小值、(x-y)的最大最小值。通过分类讨论处理四种可能的查询情况,利用线段树高效获取区间极值。具体实现包括构建线段树、单点更新和区间查询操作,最终输出四种情况中的最大值。算法时间复杂度为O(n log n)构建和O(log n)查询,适用于大规模数据处理。
2025-12-23 22:07:54
159
原创 abc437e
本文提出了一种基于图合并的算法思路:首先根据输入数据构建有向图,当读入xi和yi时,建立从xi到i的边,权值为yi。然后进行类似缩点的操作,遍历每个节点的出边,若发现两条边权值相同则合并这两个节点,用vector记录合并信息,并将第二个节点的子节点转移到第一个节点。最后通过深度优先搜索遍历并输出结果。该算法通过预处理和节点合并优化了后续处理流程。作者在实现过程中遇到了挑战,但最终成功解决了问题。
2025-12-22 21:17:32
147
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅