P4338 [ZJOI2018]历史 LCT+树形DP】的更多相关文章

\(\color{#0066ff}{ 题目描述 }\) 这个世界有 n 个城市,这 n 个城市被恰好 \(n-1\) 条双向道路联通,即任意两个城市都可以 互相到达.同时城市 1 坐落在世界的中心,占领了这个城市就称霸了这个世界. 在最开始,这 n 个城市都不在任何国家的控制之下,但是随着社会的发展,一些城市会崛 起形成国家并夺取世界的霸权.为了方便,我们标记第 i 个城市崛起产生的国家为第 i 个国家. 在第 i 个城市崛起的过程中,第 i 个国家会取得城市 i 到城市 1 路径上所有城市的控…
洛谷题目传送门 ZJOI的考场上最弱外省选手T2 10分成功滚粗...... 首先要想到30分的结论 说实话Day1前几天刚刚刚掉了SDOI2017的树点涂色,考场上也想到了这一点 想到了又有什么用?反正想不到最大的贡献是怎么推出来的 然后晚上心中怀着九条CNM看完了Solution.pdf 貌似对我这个蒟蒻来说也只有这一题可做了...... 已知书上每个点access的总次数,构造出一个顺序,最大化虚实边的切换总次数 其实如果能发现最优顺序的构造是没有后效性的话,问题便可以进一步简化 考虑每个…
传送门 题意:在$N$个点的$LCT$中,最开始每条边的虚实不定,给出每一个点的$access$次数,求一种$access$方案使得每条边的虚实变换次数之和最大,需要支持动态增加某个点的$access$次数.$N \leq 4 \times 10^5$ ZJOI2018真的都是大火题 首先一个小小的转化:对于每个非叶子节点,新开一个叶子节点,将当前非叶子节点的$access$次数转移到这些叶子节点上,这样所有的$access$操作都在叶子节点进行,可以少很多的判断. 接着我们需要考虑在每一个点上…
题目链接 \(Description\) 给定一棵边带权的树.求删掉K条边.再连上K条权为0的边后,新树的最大直径. \(n,K\leq3\times10^5\). \(Solution\) 题目可以转化为,求树上不相交的\(k+1\)条链,使得它们的边权和最大(已不想再说什么了..). 选择链数越多,答案增长得越慢,减少的时候还会减少得越快,即形成了一个\(K-Ans_K\)的上凸包:而如果没有链数的限制,DP是很容易的(有链数得加一维\(k\)). 带权二分.DP用\(f[x][0/1/2]…
题目:https://www.luogu.org/problemnew/show/P4383 关于带权二分:https://www.cnblogs.com/flashhu/p/9480669.html 自己只能想到 “如果把负边看作不存在,那么分出的连通块的直径一定可以被整个连进最终路径里”.然后就不知道连通块不是恰好 K+1 个怎么办,且也不知道是不是对的…… 原来可以直接把问题看成 “选出恰好 K+1 条不相交路径” .这样也考虑到了 “恰好 K 条” 的限制,并且好像挺对的. 结果自己还是…
$ \color{#0066ff}{ 题目描述 }$ 小L 最近沉迷于塞尔达传说:荒野之息(The Legend of Zelda: Breath of The Wild)无法自拔,他尤其喜欢游戏中的迷你挑战. 游戏中有一个叫做"LCT" 的挑战,它的规则是这样子的:现在有一个N 个点的 树(Tree),每条边有一个整数边权vi ,若vi >= 0,表示走这条边会获得vi 的收益:若vi < 0 ,则表示走这条边需要支付- vi 的过路费.小L 需要控制主角Link 切掉(…
点此看题面 大致题意: 给定一棵树每个节点\(Access\)的次数,求最大虚实链切换次数,带修改. 什么是\(Access\)? 推荐你先去学一学\(LCT\)吧. 初始化(不带修改的做法) 首先考虑初始化,即不带修改的做法,貌似这样就有30分了. 先要注意到一点:我们可以发现,对于每一个节点,它的答案是独立的,且只受其子树内的节点影响. 这么一说,应该就不难想到树形\(DP\)了吧. 如果有两个相邻\(Access\)操作,显然当且仅当这两次\(Access\)来自于当前节点的两个不同子节点…
题面 题解 先解决第一个子问题吧,它才是难点 Subtask_1 我们可以先用一个简单的树形DP处理出每棵树内部的dis和,记为dp0[i], 然后再用一个换根的树形DP处理出每棵树内点 i 到树内每个点的距离和,记为dp[i], 好,现在分两个连通块跟三个连通块两种情况讨论 两个连通块 把两棵树A,B合并到一起,我们得先确定两个连接的点, 若其分别为 i,j,不难发现答案就是 dp0[A] + dp0[B] + dp[i] * size[B] + dp[j] * size[A] + size[…
[BZOJ5212][ZJOI2018]历史(Link-Cut Tree) 题面 洛谷 BZOJ 题解 显然实际上就是给定了一棵树和每个点被\(access\)的次数,求解轻重链切换的最大次数. 先考虑不带修改的答案. 如果直接考虑全局的答案会很麻烦. 考虑每一个在每一个点处被切换的次数. 显然这个子树之和其子树内的点的\(access\)次数相关,和子树外的点无关. 而在这个点处被切换只有它的子树中不在同一棵子树内的两个点先后进行\(access\). 对于一个点统计其不同子树内的\(acce…
[ZJOI2018]历史 最大化access轻重链的切换次数 考虑一个点的贡献,即它交换重儿子的次数 发现这个次数只和它自己ai以及每个儿子的子树次数和有关. 一个关键的事实是: 我们可以自上而下进行贪心! 我们最大化fa的贡献,发现,对于操作序列,一个儿子子树的操作是一个子序列,不影响这个儿子子树的贡献! (内部可以任意交换) 等价于:有m=|son|+1种颜色,每种颜色有若干个 排成一列,最大化相邻不相同颜色的次数 设颜色最多的是h,总和为t 则次数=min(t-1,2*(t-h)) 证明的…