F

不妨前考虑 \(70 \%\) 的部分分,\(s\) 全部为 \(1\)。

首先可以发现这个问题之所以困难是因为同一个联通子树可能可以被多个中心节点导出。

因此,我们考虑对于一个合法的联通子树,在 一个 特殊的节点上将其统计,这样可以不重不漏的计算。

为了方便我们令 \(f(x, d)\) 为以 \(x\) 为染色中心距离其不超过 \(d\) 的点构成点集。

考虑什么时候两个点会重复统计,不难得到如下观察:

  • 若 \(f(x, d) \ne \{1, 2, \cdots n\}\) 则对于任意不同的 \(d\) 其 \(f\) 所对点集不同。

证明很显然。

因此,以下我们仅考虑不为全集的联通子树,显然全集是一定合法的。

  • 若 \(f(x, d_1) = f(y, d_2)\) 那么一定有靠 \(x\) 一边的子树全部被染黑或靠 \(y\) 一边的子树全部被染黑。

若两边不存在一个子树全部被染黑,令 \(k = dist(x, y) > 0\) 则有:\(d_1 = d_2 + k, d_2 = d_1 + k\),矛盾。

  • 若 \(f(x, d_1) = f(y, d_2)\) 那么 \(x, y\) 构成的链上一定存在且恰好存在一个点使得其挂在链上的子树内存在点没有被染黑。

反证法,我们可以找到最靠近 \(x\) 子树内没有被全部染黑的点 \(u\) 和最靠近 \(y\) 子树内没有被全部染黑的点 \(v\)。

令 \(k_1 = dist(x, u), k_2 = dist(y, v)\),则 \(u\) 子树内一定恰好是深度不超过 \(d_1 - k_1\) 的节点被染黑,\(v\) 子树内类似为 \(d_2 - k_2\) 的节点被染黑。

同时据此我们也可推出 \(u\) 子树内一定是被不超过 \(d_2 - k_2 - dist(u, v)\) 的节点被染黑,因为 \(u\) 子树内没有被全部染黑,所以深度不超过 \(d_1 - k_1\) 的点构成集合和深度不超过 \(d_2 - k_2 - dist(u, v)(dist(u, v) > 0)\) 构成集合一定不同,矛盾。

唯一性:若不存在则所有点被染黑,与一开始的假设不符。

  • 推论:若 \(x, y\) 在树上相邻,那么一定恰好存在一个点子树内全部被染黑,一个没有全部被染黑。

  • 若 \(f(x, d_1) = f(y, d_2)\),则 \(x, y\) 路径上的每个点 \(u\) 都唯一存在一个 \(d'\) 使得 \(f(x, d_1) = f(u, d') = f(y, d_2)\)

若存在,唯一性由观察一可以保证。

对于存在性,根据观察二,我们不妨令 \(x\) 这边的子树全部被染黑,根据 \(y\) 这边的子树是否被染黑进行讨论。

若 \(y\) 这边的子树没有被全部染黑,则 \(x, y\) 路径上所有点(除了 \(y\))子树内全被染黑,则考虑链上距离 \(x\) 最近的点 \(u\)。

令 \(k = dist(x, y)\),有 \(f(u, d_2 + k - 1)\) 一定覆盖 \(f(y, d_2)\) 中除了 \(x\) 所在的子树内的点。

于此同时,\(f(u, d_2 + k - 1)\) 一定覆盖了 \(x\) 子树内距离其不超过 \(d_2 + k - 2\) 的点。

我们知道 \(f(y, d_2)\) 中仅包含距离 \(x \ \ d_2 - k\) 的点,当 \(k \ge 1\) 时恒有 \(k - 2 \ge -k\)。

若 \(y\) 这边的子树全部被染黑,令 \(u\) 为 \(x, y\) 路径上存在的唯一一个没有被全部染黑的节点。

则有 \(d_1 - dist(x, u) = d_2 - dist(y, u)\),考虑证 \(f(x, d_1) = f(u, d_1 - dist(x, u)) = f(y, d_2)\)。

同时有 \(\forall v \in u \to y, maxdep(v) \le d_1 - dist(x, v) = d_1 - dist(x, u) - dist(u, v)\),因此 \(f(u, d_1 - dist(x, u))\) 能覆盖 \(\forall v \in u \to y\)。

同理可证另一边,此时有 \((x, u), (u, y)\) 为第一种情况,即可证明所有情况。

  • 推论 \(1\):\(\forall S\) 满足 \(S\) 合法,那么合法的染色中心一定构成一颗联通子树。
  • 推论 \(2\):\(\forall S\) 满足 \(S\) 合法,\(S\) 合法的染色中心形成的联通子树 \(T\) 一定满足 \((u, v) \in T\) 且 \(f(u, d) = S\),\(u\) 一侧子树内没有被全部染黑,\(v\) 一侧子树被全部染黑,则一定有 \(f(u, d) = f(v, d + 1)\)(根据观察四的证明易证)。
  • 推论 \(3\):\(\forall S\) 满足 \(S\) 合法,\(S\) 合法的染色中心形成的联通子树 \(T\) 一定满足存在且唯一存在 \(u \in T\) 使得 \(f(u, d) = S\) 且以 \(u\) 为根,\(\forall v \in T, f(u, d) = f(v, d + dist(u, d))\)(根据推论 \(2\) 易证)

因此,我们考虑在 \(S\) 的染色中心形成的联通子树 \(T\) 中 \(u \in T\) 且 \(f(u, d) = S\) 最小的 \(d\) 上统计 \(S\)。

因此,\(u\) 向外扩展半径为 \(d\) 的联通子树能统计当且仅当:

  • \(d < f_u\) 其中 \(f_u\) 为距离 \(u\) 最远点的距离。
  • 根据推论 \(2\),\(u\) 不存在一个子树使得删除这个子树后其他点全被染黑,即 \(d - 2 < g_u\)(\(g_u\) 为 \(u\) 往外和 \(f_u\) 所在点不在同一个子树的最远点 \(v\) 的距离)。

因此我们考虑换根求出 \(f, g\),即可 \(\mathcal{O}(n)\) 计算答案。

考虑回到 \(s\) 中存在 \(0\) 的情况,我们还是考虑将所有合法的联通子树 \(S\) 在将所有点均看作合法情况下应该统计的点统计。

容易发现现在合法的 \(S\) 是部分分的子集,因此只需要将每个点的贡献考虑进关键点的影响即可。

因此 \(\forall u, d \in [0, \min(g_u + 1, f_u - 1)]\) 的每个 \(d\),合法当且仅当 \(f(u, d)\) 的染色中心联通子树内至少存在一个合法点。

若 \(u\) 为关键点,显然所有的 \(d\) 均合法。

否则,考虑将整棵树以 \(u\) 为根,根据推论二当且仅当存在一个子树内的点全部被染黑且存在关键点。

于是我们令 \(h_u = \min\limits_{u \to v,\exists x \in S_v, s_x = 1} q_v\)(其中 \(q_v\) 为以 \(u\) 为根时 \(v\) 子树内的最远点距离),于是相当于对 \(u\) 的贡献限制了下界:\([h_u, \min(g_u + 1, f_u - 1)]\),同样换根 \(\rm dp\) 出 \(h, q\) 后直接计算即可。

复杂度 \(\mathcal{O}(n)\)。


另外提一嘴,这个题存在另外一个思考方向。

我们不考虑选取关键点来统计,考虑将重复计算的联通子树减掉。

根据合法的染色中心构成联通子树这一性质,我们考虑使用 \(\forall\) 联通子树 \(V\) 满足 \(|V| - |E| = 1\) 来容斥。

具体地,我们考虑将所有点不包含全集的贡献先全部加上。

然后枚举每条边 \((u, v)\),考虑计算出 \(u, v\) 构成相同的联通子树剪掉,这里其实就与上面做法的上下界等价。

因此这题存在一个不同的思考方式但导出的结果一模一样。

AGC008 部分简要题解的更多相关文章

  1. Noip 2014酱油记+简要题解

    好吧,day2T1把d默认为1也是醉了,现在只能期待数据弱然后怒卡一等线吧QAQ Day0 第一次下午出发啊真是不错,才2小时左右就到了233,在车上把sao和fate补掉就到了= = 然后到宾馆之后 ...

  2. Tsinghua 2018 DSA PA2简要题解

    反正没时间写,先把简要题解(嘴巴A题)都给他写了记录一下. upd:任务倒是完成了,我也自闭了. CST2018 2-1 Meteorites: 乘法版的石子合并,堆 + 高精度. 写起来有点烦貌似. ...

  3. Codeforces 863 简要题解

    文章目录 A题 B题 C题 D题 E题 F题 G题 传送门 简要题解?因为最后一题太毒不想写了所以其实是部分题解... A题 传送门 题意简述:给你一个数,问你能不能通过加前导000使其成为一个回文数 ...

  4. HNOI2018简要题解

    HNOI2018简要题解 D1T1 寻宝游戏 题意 某大学每年都会有一次 Mystery Hunt 的活动,玩家需要根据设置的线索解谜,找到宝藏的位置,前一年获胜的队伍可以获得这一年出题的机会. 作为 ...

  5. JXOI2018简要题解

    JXOI2018简要题解 T1 排序问题 题意 九条可怜是一个热爱思考的女孩子. 九条可怜最近正在研究各种排序的性质,她发现了一种很有趣的排序方法: Gobo sort ! Gobo sort 的算法 ...

  6. BJOI2018简要题解

    BJOI2018简要题解 D1T1 二进制 题意 pupil 发现对于一个十进制数,无论怎么将其的数字重新排列,均不影响其是不是 \(3\) 的倍数.他想研究对于二进制,是否也有类似的性质. 于是他生 ...

  7. CQOI2018简要题解

    CQOI2018简要题解 D1T1 破解 D-H 协议 题意 Diffie-Hellman 密钥交换协议是一种简单有效的密钥交换方法.它可以让通讯双方在没有事先约定密钥(密码)的情况下,通过不安全的信 ...

  8. AtCoder ExaWizards 2019 简要题解

    AtCoder ExaWizards 2019 简要题解 Tags:题解 link:https://atcoder.jp/contests/exawizards2019 很水的一场ARC啊,随随便便就 ...

  9. Comet OJ - Contest #2 简要题解

    Comet OJ - Contest #2 简要题解 cometoj A 模拟,复杂度是对数级的. code B 易知\(p\in[l,r]\),且最终的利润关于\(p\)的表达式为\(\frac{( ...

随机推荐

  1. mac学习Python第一天:安装、软件说明、运行python的三种方法

    一.Python安装 从Python官网下载Python 3.x的安装程序,下载后双击运行并安装即可: Python有两个版本,一个是2.x版,一个是3.x版,这两个版本是不兼容的. MAC 系统一般 ...

  2. 「THUSCH 2017」大魔法师

    Description 大魔法师小 L 制作了 \(n\) 个魔力水晶球,每个水晶球有水.火.土三个属性的能量值.小 L 把这 \(n\) 个水晶球在地上从前向后排成一行,然后开始今天的魔法表演. 我 ...

  3. 深度探索 OpenStack Neutron:BGP(1) 【转载】

    3.4 BGP 原文地址:http://mp.weixin.qq.com/s?src=3&timestamp=1500043305&ver=1&signature=XwiIVV ...

  4. Chapter 5 Interaction

    目录 5.1 Interaction requires a joint intervention 5.2 Identifying interaction 5.3 Counterfactual resp ...

  5. 【MySQL作业】SELECT 数据查询——美和易思MySQL运算符应用习题

    点击打开所使用到的数据库>>> 1.查询指定姓名的客户(如"张晓静")的地址和电话号码. select address 地址, phone 电话号码 from c ...

  6. 《MySQL数据操作与查询》- 综合项目 - 学生管理系统

    <MySQL数据操作与查询>综合项目需求 一.系统整体功能 维护学生信息.老师信息和成绩信息. 支持按多种条件组合查询学生信息和成绩信息. 二.系统的信息需求 一个班级有一个讲师一个班主任 ...

  7. 编写Java程序,使用抽象类和抽象方法构建不同动物的扑食行为,抽象类设计

    返回本章节 返回作业目录 需求说明: 不同的动物都有进食的行为,但是在进食前需要捕获到食物后才可以进食. 要求定义一个抽象的动物类,该类中有一个抽象的捕食方法,和一个非抽象的进食方法.在进食方法中调用 ...

  8. C# 后台发送get,post请求及WebApi接收

    后台发送get请求 1.发送带参数的get请求 /// <summary> /// 发送get请求 参数拼接在url后面 /// </summary> /// <para ...

  9. 涂鸦智能 dubbo-go 亿级流量的实践与探索

    涂鸦智能 dubbo-go 亿级流量的实践与探索 dubbo 是一个基于 Java 开发的高性能的轻量级 RPC 框架,dubbo 提供了丰富的服务治理功能和优秀的扩展能力.而 dubbo-go 在 ...

  10. SpringCloud创建项目父工程

    1.说明 本文详解介绍Spring Cloud项目的父工程创建, 由于Spring Cloud项目下有很多模块组件, 需要先创建一个大的父工程项目, 然后在下面创建各个子工程模块. 2.创建父工程 这 ...