题解

美丽新世界

https://ac.nowcoder.com/acm/contest/70307/A

A

按照题意模拟即可。

注意幂次需要手动计算不能用 pow,因为数字过大。

B

由于要最大化冷场程度,所以贪心地让一个连续区间内的客人全部离席即可。

排序后枚举离席的第一个客人,取 即为答案。

时间复杂度

很抱歉这题在题意上出现了一些瑕疵。

C

位置上的答案相同,等价于 。利用异或的性质,得 。统计有多少个不同的 即可。

实现方法很多,时间复杂度

D

首先通过自身与自身相除可以构造出 ,然后用类似于快速幂的方式即可构造出任意的 。操作次数

E

先考虑如果 确定,最优的花费是什么。

我们定义从 出发到 ,读档回到 的过程为 从 x 走到 z 中的点为关键点。

对于点 ,若其子树内(包含 )有至少 关键点,那么遍历到点 一定不劣。

证明很简单,设子树内有 个关键点,那么每靠近 一段距离 ,至少能减少 的代价,至多会增加 的代价(再走回去)。当 时,

所以只需要给每一个点打一个向上的差分标记,标记上传后,权值 的点就是需要遍历的。显然需要遍历的点形成了一个包含 的联通块,连通块内的点对答案的贡献是 (最后要回到 ,所以每条边一定有一进一出),连通块外关键点到连通块路径上边对答案的贡献则是 (这部分的边不需要走到,但参观的花费依然有)。


考虑经过上述处理之后,对于一个 我们得到了什么:

我们将树剖成了三层,上层的边贡献为 ,中层的边贡献为 ,底层的边贡献为 。因为 不可重,所以每一个上层节点和下层之间一定相隔了中层节点。

表示在以 为根的子树内,边的总贡献为 的返祖边为 边( 边表示中层的边, 边表示上层的边 )的方案数,用类似于树上背包的方式转移即可。

观察到答案的上界是 ,将 的情况丢掉后,时间复杂为

F

首先一个关键的结论是,点 一定落在 上。因为不在 上的路径对 的贡献是相同的,可以省去。

为了方便表述,以下设

不妨假设 落在 上(另一侧同理)。那么我们需要最小化 。设 表示 ,则有

由于前两项都是定值,所以题目转化为找到最接近 的值。

考虑在 dfs 全树的同时,在每个节点维护一棵主席树,存储 路径上所有点的 值,查询时在对应的主席树上二分即可。

时间复杂度

全部评论
这场unrated?为什么显示不计
3 回复 分享
发布于 2023-11-25 13:55 内蒙古
这场unrated?为什么显示不计
2 回复 分享
发布于 2023-11-24 21:50 浙江
这场unrated?为什么显示不计
点赞 回复 分享
发布于 2023-11-25 18:26 浙江
F感觉树链剖分+二分也可以,x,y的祖先一定在一边,假设dis(x,祖先更大),那么x在重链上面一直跳,直到跳到某一条重链上面,发现dis(x,y)/2位于该链上,停止跳,在这个重链上面二分
点赞 回复 分享
发布于 2023-11-24 22:19 上海

相关推荐

勇敢的突尼斯海怪选钝...:楼主这拒意向话术好得体呀 !求问HR回复态度咋样呀
点赞 评论 收藏
分享
评论
12
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务