首页 > 其他分享 >换根dp三题

换根dp三题

时间:2024-07-20 20:29:11浏览次数:12  
标签:三题 子树 dp2 dp1 siz 换根 dp

真的是公公又式式啊

换根dp的宗旨是利用已有的信息来推出其他信息

换根dp的题目通常是树,o(n)时间空间,要求每一个点的答案。

我们如果指定了以1为根,那么可以算出每个点往下的答案,但是每个点的父亲对本身的贡献还没有算,所以我们可以记录dp1,dp2两个数组,分别记录


专用图

注意,dp1[u]记录的是u下的子树,dp2[u]记录的是2号子树的答案,所以dp2[to]就是通过1号子树,u和dp2[u]的合并得到答案

P3478

我们指定1为根,那么可以算出每个点往下的答案

\[dp1[u]=siz[u]-\sum dp1[u] \]

\[dp2[to]=dp1[u]+dp2[u]+siz[1]-siz[to] \]

\[ans[u]=dp1[u]+dp2[u] \]

当然还有更简单的方法,每次从u到to,to的子树里节点深度都减1,其他节点深度+1

\[dp[to]=dp[u]-siz[to]+n-siz[to] \]

CF708C

需要转化,发现如果一个点如果是重心那不用改,如果不是那必然会有一个子树大小大于n/2,我们需要从这颗子树里再剥出一棵子树,剥出来的子树大小小于等于n/2并且剥完之后子树大小小于等于n/2。有个简单的贪心就是所以我们设计dp1[u]为u向下的最大的大小小于等于n/2的子树大小,dp2[u]为u向上的最大的大小小于等于n/2的子树大小。

\[if(siz[u]<=n/2) \ dp1[u]=siz[u] \]

\[else\ dp1[u]=min(dp1[to]) \]

\[if(n-siz[u]<=n/2)\ dp2[u]=n-siz[u] \]

\[else\ dp2[to]=min(dp1[to],dp2[u]) \]

记得在做to时不要把to算进去

CF543D

首先我们设dp[u][0]为子树内全修的方案数,dp[u][1]为子树内一部分修的方案数,两者都保证合法。发现dp[u][0]始终=1,于是压掉一维。那么这题有两种转移方法,一种是\(dp[u] =(\prod dp[to]+2)-1\)意思是如果这条路要修的话下面任意,如果下面全都修了那么这条路会有两种方法,然后有一种方案和dp[u][0]重了,要减掉

还有一种方法是\(dp[u]=\prod dp[to]+1\),意思是如果这条路修的话下面任意,不修的话就是下面全要修。

然后我们dp1[u]就是正常搞,dp2[to]就等于1号子树+2的乘积乘上dp[u]+2,然后ans[u]=dp1[u]*(dp2[u]+2)-1,逆元用前缀积+后缀积即可。

标签:三题,子树,dp2,dp1,siz,换根,dp
From: https://www.cnblogs.com/wuhupai/p/18313732

相关文章

  • dpvs 调整tcp mss
    修改tcpoptions中mss值src/ipvs/ip_vs_proto_tcp.c因为tcp头部options中不同kind顺序是随机的,所以需要遍历找到kind值是mss2和length值是4,再修改后面的mssvalue。staticvoidtcp_out_adjust_mss(intaf,structtcphdr*tcph){unsignedchar*ptr;intlength;......
  • dp-完全背包
    解释完全背包模型与0-1背包类似,与0-1背包的区别仅在于一个物品可以选取无限次,而非仅能选取一次。我们可以借鉴0-1背包的思路,进行状态定义:设$f_{i,j}$为只能选前i个物品时,容量为j的背包可以达到的最大价值。需要注意的是,虽然定义与0-1背包类似,但是其状态转移方程与......
  • Javascript 在我的本地服务器上运行,但在 WordPress 上不起作用
    大家好,我有一个问题。我有一个在本地服务器中完美运行的模板/主题,但是当我将其移动到Wordpress时,根据我的研究,我得到了“jQuery不兼容”的信息。 我附上了代码的图像。你能帮我一下吗,一切看起来都很完美,在我看来一切都很完美,但在Wordpress中却不然。提前谢谢你!......
  • 数位 DP
    数位\(dp\)大多使用高位计算的时候使用低位计算后的结果,从而做到优化效率[ZJOI2010]数字计数题目描述给定两个正整数\(a\)和\(b\),求在\([a,b]\)中的所有整数中,每个数码各出现了多少次。保证\(1\lea\leb\le10^{12}\)。求解策略第一种方法-递推法定义\(dp_i......
  • Docker部署wordpress-6.6
    目录一.环境准备二.准备对应的配置文件三.编写Dockerfile四.构建镜像五.配置MySQL 六.安装wordpress 七.扩展一.环境准备localhost192.168.226.25rocky_linux9.4Dockerversion27.0.3关闭防火墙和selinux,进行时间同步。安装docker#step1:安装必......
  • 预设型DP
    DP搬运工1Description给你n,k,求有多少个1到n的排列,满足相邻两个数的max的和不超过k。InputFormat一行两个整数n,k。OutputFormat一行一个整数ansans表示答案\(\text{mod998244353}\)。Sample样例输入1410样例输出116样例输入21066样例输出2198......
  • SharedPreferences 和 MMKV 是何方神圣
    一、概述SharedPreferences和MMKV都是Android平台保存本地数据的工具,用于保存一些常用配置。二、SharedPreferences1.类似Map集合,将Key-Value对存储于硬盘上的XML文件,以XML文件的形式保存在/data/data/包名/shared_prefs目录下。数据较多时会有性能问题。2.SharedPrefe......
  • dp-01背包
    01背包问题是动态规划中的一个经典问题,通常用于解决资源分配问题。问题描述如下:假设有一个背包,其最大承重为$W)。同时,有$n)个物品,每个物品有一个重量$w_i)和一个价值$v_i)。目标是选择一些物品放入背包,使得在不超过背包承重的前提下,背包中物品的总价值最大。问题......
  • 【MATLAB源码-第149期】基于MATLAB的2ASK,2FSK,2PSK,2DPSK等相干解调仿真,输出各节点波
    操作环境:MATLAB2022a1、算法描述2ASK(二进制幅移键控)、2FSK(二进制频移键控)、2PSK(二进制相移键控)和2DPSK(二进制差分相移键控)是数字调制技术中的基本调制方式,它们在无线通信、数据传输等领域有着广泛的应用。相干解调是这些调制方式中一个重要的解调技术,它要求接收端的本地振......
  • windows远程桌面打开rdp 调用显卡
    -----------------------------------------------------------------------------------------------------------前情提要:服务器在公网环境,带宽只有30M。远程桌面多开玩游戏,设置RDP服务端使用GPU。压缩传输带宽避免造成卡顿。如果是内网,也可以用,还可以提供一个注册表键值,修......