首页 > 其他分享 >AT_abc222_f [ABC222F] Expensive Expense 题解

AT_abc222_f [ABC222F] Expensive Expense 题解

时间:2024-03-07 13:14:22浏览次数:30  
标签:val mathit 题解 最大值 fa max abc222 ABC222F 节点

分析

没脑子的题目。

一眼换根 DP。定义 \(\mathit{f}_{i}\) 表示 \(i\) 到 \(i\) 为根子树中某一个节点的距离最大值;\(\mathit{g}_{i}\) 表示 \(i\) 经过其父节点到某个节点的距离最大值。那答案就是 \(\max(\mathit{f}_i,\mathit{g}_i)\)。

考虑转移。\(\mathit{f}_i\) 的转移很简单,就是 \(\mathit{f}_{i} =\max\{\max(val_j,f_j)+w_k|i \to j\}\)。这里将 \(val_j\) 和 \(\mathit{f}_i\) 取最大值是因为会出现 \(j\) 是叶子节点的情况。求 \(\mathit{g}_i\) 的时候换根 DP 就行了。定义 \(\mathit{fa}_i\) 表示 \(i\) 的父亲节点。那么 \(\mathit{g}_i=\max(\max(val_{fa_i},g_{fa_i})+w_k,\max\{\max(val_j,f_j)+w_{k'}+w_k|fa_i \to j\land fa_i \to i\})\)。前半部分是由父亲直接转移的情况,后半部分是由与 \(i\) 同备份的节点转移的情况。用两个变量存最大值和次小值可以 \(O(n)\) 求出来,当然也是可以 \(O(n \log n)\) 用大根堆乱搞。

代码

Link.

标签:val,mathit,题解,最大值,fa,max,abc222,ABC222F,节点
From: https://www.cnblogs.com/harmisyz/p/18058649

相关文章

  • CF1223F Stack Exterminable Arrays 题解
    分析接着这个说。现在我们需要优化\(\mathit{nxt}_{i}\)。重新定义一下,\(\mathit{nxt}_{i,j}\)表示在后\(i\)个数中,\(j\)第一次出现的位置,且\([i+1,\mathit{nxt}_{i+1,a_i}-1]\)是一个合法串。这玩意很像一个DP,所以完全可以按照DP的转移思路转移:\(\mathit{nxt}_{i,j}=......
  • CF514D R2D2 and Droid Army 题解
    分析乱搞题。考虑将区间\([l,r]\)中所有人干掉的代价。设\(cnt_{i}=\max\limits_{j=l}^{r}a_{j,i}\),则代价为:\(\sum\limits_{i=1}^{m}cnt_i\)。很显然,只有在\(\sum\limits_{i=1}^{m}cnt_i\lek\)是,我们才能将这些人全部干掉。考虑枚举右端点\(r\),与每个\(r\)对应的最......
  • P4863 题解
    Solution为了方便,我们定义\(f_n=\sum_{i=1}^{n}\sum_{j=i}^{n}\lfloor\frac{i}{j}\rfloor\times(-1)^j\)。于是答案即为\(f_b-f_{a-1}\)。观察到如果我们直接计算这个式子而不做丝毫变形的话时间复杂度是\(O(n^2)\)的。考虑把先枚举\(j\),计算\(j\)的贡献。此时就有......
  • CF1066E Binary Numbers AND Sum 题解
    分析因为\(a\)是一直没有改变的,移动的只有\(b\),所以从\(a\)的每一位的贡献入手。对于\(a\)中的从低到高第\(i\)位,其对应的十进制值是\(a_{n-i+1}\times2^{i-1}\)。注意到\(b\)是每次右移一位的,所以在\(b\)中能与\(a_{n-i+1}\)匹配的都是在下标区间\([1,m-i+1]......
  • ABC263F 题解
    Solution考虑\(f_{i,j}\)表示第\(i\)个人赢下了第\(j\)场的最大价值,答案即为\(\max_{i=1}^{n}f_{i,m}\)。然后考虑状态转移,令\(l,r\)为第\(i\)个人在打第\(j\)场比赛时的区间,\(mid\)为区间中点,然后分为两种情况:第\(i\)个人在左半部分,转移即为\(f_{i,j}=f_{i......
  • P9757 [COCI2022-2023#3] Dirigent 题解
    分析对于一个从小到大(按编号排序)的长度为\(n\)的序列\(A\),有性质:相邻两个数之差的绝对值为\(1\)的数量为\(n-1\)。那么,对于这道题,能使环剪开一条边使其按编号排序,必有相邻两个\(i,j\),满足\((A_i-A_j=1)\)的数量为\(n-1\)。注意,因为这是个环,所以\(i,j\)大小关系不能......
  • 常见问题解决 ---
    问题描述Internalerror.Pleaserefertohttps://jb.gg/ide/critical-startup-errorsjava.lang.AssertionError:FailedtoreadC:\Users\**\updatedBrokenPlugins.dbatcom.intellij.openapi.diagnostic.DefaultLogger.error(DefaultLogger.java:54)atcom.intellij......
  • CSP认证2022.12 452分题解
    A、现值计算题解题目简单易懂,直接写就行了。importmathn,i=map(float,input().split())n=int(n)a=list(map(int,input().split()))ans=0.00forjinrange(n+1):ans=ans+math.pow(1+i,-j)*a[j]print(ans)B、训练计划题解显然是个......
  • .NET Core WebAPI项目部署iis后Swagger 404问题解决
    .NETCoreWebAPI项目部署iis后Swagger404问题解决前言之前做了一个WebAPI的项目,我在文章中写到的是Docker方式部署,然后考虑到很多初学者用的是iis,下面讲解下iis如何部署WebAPI项目。环境准备iisASPNETCoreModuleV2重点.NETCoreRuntimeiis的配置这里就不讲了,主要讲解......
  • 【转】[Java]引入Redisson可能会出现项目启动失败问题解决
    转自:https://blog.csdn.net/bengbuguang4321/article/details/121951650在启动项目时,Redisson自己会启动一个Redisson连接池,尝试连接redis,这时候如果遇到网络不通就会出现问题,因为redis连接不上,导致项目启动不了解决方法是:1、重新空实现了一个RedissonClient/***@ClassNa......