以下均为内网

树上染色 https://www.lydsy.com/JudgeOnline/problem.php?id=4033

可怜与超市 http://hzoj.com/contest/62/problem/5

可以简单的列出状态转移方程。

它的转移过程类似:

 void dfs(int x)
{
for(unsigned i=;i<p[x].size();++i) dfs(p[x][i]);
int cur=;
memset(tmp[cur],0x3f,sizeof(tmp[cur]));
tmp[cur][][]=tmp[cur][][]=;
for(unsigned i=;i<p[x].size();++i)
{
int now=sz[p[x][i]]; cur^=;
memset(tmp[cur],0x3f,sizeof(tmp[cur]));
for(int j=;j<=sz[x];++j)
for(int k=;k<=now;++k)
{
tmp[cur][][k+j]=min(tmp[cur][][k+j],tmp[cur^][][j]+dp[][p[x][i]][k]);
tmp[cur][][k+j]=min(tmp[cur][][k+j],tmp[cur^][][j]+dp[][p[x][i]][k]);
tmp[cur][][k+j]=min(tmp[cur][][k+j],tmp[cur^][][j]+dp[][p[x][i]][k]);
}
sz[x]+=now;
}
++sz[x];
dp[][x][]=; dp[][x][]=;
for(int i=;i<=sz[x];++i) dp[][x][i]=tmp[cur][][i-]+wc[x];//db(dp[1][x][i]);
for(int i=;i<=sz[x];++i) dp[][x][i]=min(tmp[cur][][i],tmp[cur][][i-]+c[x]);
}

eg

看上去的复杂度是$O(n^3)$,

然而仔细分析,复杂度只有$O(n^2)$,可以通过n为5000左右的数据。

引入一个概念,(a,b)为树上的点对,则该点对在图中有$n^2$个

观察状态的转移,

在x节点范围内,设x有k个节点,

复杂度为:

$\sum \limits_{i=1}^{k}\sum \limits_{j=i}^{k}size_i*size_j$

我们发现这样求出来,恰好是lca为x的点对个数。

每个点对一定存在且仅存在一个lca,每个点对只会被统计不超过一次,

所以总的复杂度为$O(n^2)$。

一些树上dp的复杂度证明的更多相关文章

  1. 洛谷【P2458】[SDOI2006]保安站岗 题解 树上DP

    题目描述 五一来临,某地下超市为了便于疏通和指挥密集的人员和车辆,以免造成超市内的混乱和拥挤,准备临时从外单位调用部分保安来维持交通秩序. 已知整个地下超市的所有通道呈一棵树的形状:某些通道之间可以互 ...

  2. HZOJ 20190727 T2 单(树上dp+乱搞?+乱推式子?+dfs?)

    考试T2,考试时想到了40pts解法,即对于求b数组,随便瞎搞一下就oxxk,求a的话,很明显的高斯消元,但考试时不会打+没开double挂成10pts(我真sb),感觉考试策略还是不够成熟,而且感觉 ...

  3. codevs 1421 秋静叶&秋穣子(树上DP+博弈)

    1421 秋静叶&秋穣子   题目描述 Description 在幻想乡,秋姐妹是掌管秋天的神明,作为红叶之神的姐姐静叶和作为丰收之神的妹妹穰子.如果把红叶和果实联系在一 起,自然会想到烤红薯 ...

  4. bzoj 2286 [Sdoi2011]消耗战(虚树+树上DP)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2286 [题意] 给定一棵树,切断一条树边代价为ci,有m个询问,每次问使得1号点与查询 ...

  5. 洛谷P4426 毒瘤 [HNOI/AHOI2018] 虚树+树上dp

    正解:虚树+树上dp 解题报告: 传送门! 首先解释一下题意趴,,,语文70pts选手已经开始看不懂题辣QAQ 大概就是个给一个图,求独立集方案,且保证图是联通的,边的数量最多只比点多10 首先思考如 ...

  6. 【题解】彩色树 51nod 1868 虚树 树上dp

    Prelude 题目在这里:ο(=•ω<=)ρ⌒☆ Solution 蒟蒻__stdcall的第一道虚树题qaq. 首先很容易发现,这个排列是假的. 我们只需要求出每对点之间的颜色数量,然后求个 ...

  7. BZOJ 4027: [HEOI2015]兔子与樱花 树上dp

    4027: [HEOI2015]兔子与樱花 Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline ...

  8. CodeForces 690C2 Brain Network (medium)(树上DP)

    题意:给定一棵树中,让你计算它的直径,也就是两点间的最大距离. 析:就是一个树上DP,用两次BFS或都一次DFS就可以搞定.但两次的时间是一样的. 代码如下: #include<bits/std ...

  9. Codeforces Round #526 (Div. 2) D. The Fair Nut and the Best Path 树上dp

    D. The Fair Nut and the Best Path 题意:给出一张图 点有权值 边也要权值 从任意点出发到任意点结束 到每个点的时候都可以获得每个点的权值,而从边走的时候都要消耗改边的 ...

随机推荐

  1. Java se课程设计详解——数据库接口类(1)

    开始做课程设计的时候根本无从下手,后来查阅资料后发现是先从数据库开始的.整个课程设计需要用到的如下图,今天总结一下数据库接口! 数据库接口需要用到两个类,一个是DAO.java,另一个是propert ...

  2. C# LDAP认证登录类参考

    public class LDAPHelper     {         private DirectoryEntry _objDirectoryEntry;         /// <sum ...

  3. docker部署angular和asp.net core组成的前后端分离项目

    最近使用docker对项目进行了改进,把步骤记录一下,顺便说明一下项目的结构. 项目是前后端分离的项目,后端使用asp.net core 2.2,采用ddd+cqrs架构的分层思想,前端使用的是ang ...

  4. PIESDKDoNet二次开发配置注意事项

    在安装完PIESDK进行二次开发的过程中会遇到下面几种常见的开发配置问题,就写一个文档总结一下. 1.    新建项目无PIESDK模板问题 关于新建项目时候,找不到下图中的PIEMainApplic ...

  5. disable_function绕过--利用LD_PRELOAD

    0x00 前言 有时候直接执行命令的函数被ban了,那么有几种思路可以bypass 1.使用php本身自带的能够调用外部程序的函数 2.使用第三方插件入(如imagick) 但是这两种无非就是利用ph ...

  6. android studio学习----如何创建一个库项目

    首先,打开Android studio的软件工具,进入到界面中点击菜单的“file”选项. 2 在弹出的下拉的菜单中,可以看到的是为"New Module“的选项点击进入.   3 进入到c ...

  7. SpringBoot2.0整合fastjson的正确姿势

            SpringBoot2.0如何集成fastjson?在网上查了一堆资料,但是各文章的说法不一,有些还是错的,可能只是简单测试一下就认为ok了,最后有没生效都不知道.恰逢公司项目需要将J ...

  8. 安装Docker报container-selinux >= 2.9错

    Docker装了无数次,还是会遇到如此熟悉的问题,知道他是版本需要更新,但是就是找不到对应的,在网上找了差不多一个下午都没弄好.发现平时还是要多动脑子才行,既然知道是版本需要更新,那么到官网直接找版本 ...

  9. Class版本号和Java版本对应关系

    1.背景 版本号不对,会报错,如下 2.版本对应情况 JDK 1.8 = 52  JDK 1.7 = 51 JDK 1.6 =50 JDK 1.5 = 49  JDK 1.4 = 48  JDK 1. ...

  10. ASP.NET Core MVC 502 bad gateway 超时如何处理

    在网页程序运行需要较长时间运行的时候,ASP.NET Core MVC会出现502 bad gateway请求超时情况.一般默认的超时时间都比较短,我们需要在 web.config 中配置一下.其中  ...