我定睛一看,上一篇博客居然是去年省选写的。。。emmm我果然很懒。。

又是一年省选季,临死前订正一下去年的题吧。。

作为第一天30pts的滚粗选手,我去年并没有怎么思考这题。。

题意概括好麻烦,来来来我们放题目链接。。

为了方便叙述,我们用Ti表示 ∑(i在lca的子树中)ai

从无修改的情况的入手。我们先解决一个问题,即:如果给出一个崛起的顺序,比如样例中的4,1,5,3,2,我们要怎么计算灾难度之和。

考虑顺序为:......u.....v..... 则u,v贡献一个灾难度的条件为:u....v之间没有点在lca(u,v)的子树中。比如例子中4,1,5中的4,5贡献了一个灾难度,是因为1不在lca(4,5)=2的子树中。可以发现,如一个u,v能通过lca贡献一个灾难度,那么u,v仅有两种情况:1.u,v为lca不同儿子的后代 2.u,v中某点为lca,另一点为lca的后代。

考虑u,v十分地累。。。所以考虑每个lca,由 u,v贡献灾难度的条件 我们发现,要计算通过lca贡献1的点对个数,只需关心lca子树中各点(共 ∑(i在lca的子树中)ai 个点)的相对位置。假设我们已知这个相对位置,现在要计算哪些点可以通过lca贡献一个灾难度。由情况1,2我们知道,lca的每个儿子的子树中的点是等价的。令lca的儿子个数为s,则,我们可以将lca子树中的所有点看成一些染了色的点(共s+1种颜色,每个儿子子树一种+lca一种)。

现在,对于每个lca,我们得到了(s+1)中颜色的点的排列。那么,通过lca贡献的1的点对个数 等价于这个排列上 相邻且不同色的点对u,v 的个数。(Q:为什么一定要相邻?A:如果不相邻,那么u,v之间出现的点一定会把u和v的所有公共路径覆盖掉,此时两点无法贡献答案。)

好,现在我们已经得到了一种已知崛起顺序的计算方法,我们来考虑让灾难度之和最大。容(mei)易(you)发现,上述计算方法有一个很不错的性质,即不管每个lca子树里怎么安排它的颜色序列,这些颜色序列都能组成整个方案。并且,每个序列可以直接对答案有独立贡献。这就很棒,不带修改的情况直接转换为一个相对简单的问题:

有c种颜色的点,颜色为i的点有Ti个。求出所有点的排列中 相邻异色点对个数 的最大值。

这个最大值的上界显然是 Ti-1 。我们考虑构造一种排列。现在我们有  Ti个空格子。我们将{ai}从大到小排序。先取出a1个颜色为1的点来填。为尽量不浪费,我们隔一格填1个1。填完之后,我们把填好的格子看作被删掉,有了一条的连续空格子,于是我们可以取出a2个颜色为2的点,重复上述过程。(举个

ZJOI2018 D1T2 历史(毕竟我菜,所以题解十分易懂。。)的更多相关文章

  1. 「ZJOI2018」历史(LCT)

    「ZJOI2018」历史(LCT) \(ZJOI\) 也就数据结构可做了-- 题意:给定每个点 \(access\) 次数,使轻重链切换次数最大,带修改. \(30pts:\) 挺好想的.发现切换次数 ...

  2. 「ZJOI2018」历史

    「ZJOI2018」历史 前置知识 \(\text{LCT}\) 维护子树信息,考虑辅助树上一个节点的子树信息只是其代表的这一段链的信息,设 \(S(u)\) 为节点 \(u\) 的子树信息,那么在辅 ...

  3. 题解 「ZJOI2018」历史

    题目传送门 Description 九条可怜是一个热爱阅读的女孩子. 这段时间,她看了一本非常有趣的小说,这本小说的架空世界引起了她的兴趣. 这个世界有 \(n\) 个城市,这 \(n\) 个城市被恰 ...

  4. 【刷题】UOJ #374 【ZJOI2018】历史

    九条可怜是一个热爱阅读的女孩子. 这段时间,她看了一本非常有趣的小说,这本小说的架空世界引起了她的兴趣. 这个世界有 \(n\) 个城市,这 \(n\) 个城市被恰好 \(n-1\) 条双向道路联通, ...

  5. UOJ#374. 【ZJOI2018】历史 贪心,LCT

    原文链接https://www.cnblogs.com/zhouzhendong/p/UOJ374.html 题解 想出正解有点小激动. 不过因为傻逼错误调到自闭.不如贺题 首先我们考虑如何 $O(n ...

  6. LOJ #2434. 「ZJOI2018」历史(LCT)

    题意 click here 题解 我们首先考虑答案是个什么样的东西, 不难 发现每个点可以单独计算它的贡献. 令每个点 \(i\) 崛起次数为 \(a_i\) . 假设一个点子树的 \(\sum a_ ...

  7. @loj - 2434@ 「ZJOI2018」历史

    目录 @description@ @solution@ @accepted code@ @details@ @description@ 九条可怜是一个热爱阅读的女孩子. 这段时间,她看了一本非常有趣的 ...

  8. 「珍贵历史资料鉴赏」CF786B 题解

    写在前面 偶然翻到一篇 2019-08-07 18:58 写的未发布的题解. 给大家找点乐子玩. 正文 知识点:线段树优化建图 线段树优化建图 用于解决 类似 从 x 向区间[L,R]的 区间连边问题 ...

  9. LOJ2434. 「ZJOI2018」历史 [LCT]

    LOJ 思路 第一眼看似乎没有什么思路,试着套个DP上去:设\(dp_x\)表示只考虑\(x\)子树,能得到的最大答案. 合并的时候发现只有\(x\)这个点有可能做出新的贡献,而做出新贡献的时候必然是 ...

随机推荐

  1. Oracle 11g 测试ogg中断之后,重新同步操作

    测试ogg中断之后,重新同步操作 2018-06-07 17:11 779 1 原创 GoldenGate 本文链接:https://www.cndba.cn/leo1990/article/2839 ...

  2. MFC如何在树形图边上添加动态小地图

    MFC如何在树形图边上添加动态小地图 https://www.jianshu.com/p/7b1d828bf5db (简书无法识别缩进的...早知道先在博客园发了) (转载请注明出处) 作者:梦镜谷雨 ...

  3. 外贸站全球网速测试+免费CDN使用教程

    关于外贸网站速度测试,以前一全老师(www.yiquanseo.com)也讲到过,但是在那篇文章中推荐给大家的两个测试网站(https://developers.google.com/speed/pa ...

  4. optimal-account-balancing

    一群朋友去度假,有时互相借钱. 例如,爱丽丝为比尔的午餐支付了 10 美元.后来克里斯给爱丽丝 5 美元搭出租车.我们可以假设每笔交易为一个三元组(X,Y,Z),这意味着第 X 个人借给第 Y 个人  ...

  5. Android : Camera2/HAL3 框架分析

    一.Android O上的Treble机制: 在 Android O 中,系统启动时,会启动一个 CameraProvider 服务,它是从 cameraserver 进程中分离出来,作为一个独立进程 ...

  6. python之生成器与迭代器

    生成器 列表生成式:li = [i for i in range(10)] 将列表生成式中[]换成()即为生成器generator 生成器保存的对象不是具体的数,而是一种算法,一种推导式,调用__ne ...

  7. OO第一单元作业总结之初识面向对象

    第一个单元的三次作业均为求导,循序渐进的让我们掌握如何构造类和方法,让整个代码是面向对象的设计而不是面向过程的设计.如果第一次作业和第二次作业你只是简单的对过程着手架构类,到了第三次作业就会变得格外麻 ...

  8. Input禁用文本框

    <input type="text" readonly="readonly" /> readonly:只读属性:

  9. shell_base

    1.使用if_then语句if command then commands fi 先运行if后面的命令,如果命令的退出状态是0(成功执行命令),就将执行then后面,fi前面的所有命令.否则就跳到fi ...

  10. linux安装openssl

    1.简介 给网站配置http2发现openssl版本不够,只能靠升级openssl了,shell让安装不再麻烦. 系统环境 centos 7.4 64位 安装 openssl1.1.1a版本 2.查看 ...