当前位置: 首页 > news >正文

关于树形背包DP的时间复杂度证明

例题——洛谷P2014 [CTSC1997] 选课

代码

#include<bits/stdc++.h>
using namespace std;
int n,m;
vector<int> a[305];
int s[305],dp[305][305],si[305];
void dfs(int x)
{si[x]=1; dp[x][1]=s[x];for(int i=0;i<a[x].size();i++){dfs(a[x][i]);for(int p=min(si[x],m);p>=1;p--)for(int j=min(si[a[x][i]],m-p);j>=0;j--)dp[x][j+p]=max(dp[x][j+p],dp[x][p]+dp[a[x][i]][j]);si[x]+=si[a[x][i]];}
}
int main()
{cin>>n>>m;m++;for(int i=1;i<=n;i++){int k;cin>>k>>s[i];a[k].push_back(i);}dfs(0);cout<<dp[0][m];return 0;
} 

大家不要认为是是 O(n3)O(n^3)O(n3),如果优化得当可以达到 O(n2)O(n^2)O(n2)(如上方程序)。

证明

对于每个点,都是其儿子的子树大小两两相乘(子树不与本身相乘!)的复杂度:
∑i=1n∑j=son(sj∗∑k=sonk<jsk)\sum_{i=1}^{n} \sum_{j=son}^{} (s_{j}*\sum_{k=son}^{k< j}s_{k})i=1nj=son(sjk=sonk<jsk)
因为 ∑k=sonsk=si−1\sum_{k=son}^{}s_{k}=s_{i}-1k=sonsk=si1
所以 ∑i=1n∑j=sonsj∗∑k=sonk<jsk=∑i=1n∑j=sonsj∗(si−1−sj)2=−∑i=2nsi2+∑i=1nsi∗(si−1)2−∑i=2nsi∗si2(这里不包含根节点)\sum_{i=1}^{n} \sum_{j=son}^{} s_{j}*\sum_{k=son}^{k<j}s_{k} =\frac{\sum_{i=1}^{n} \sum_{j=son}^{}s_{j}*(s_{i}-1-s_{j})}{2}=-\frac{\sum_{i=2}^{n}s_{i} }{2}+ \frac{\sum_{i=1}^{n} s_{i}*(s_{i}-1)}{2}- \frac{\sum_{i=2}^{n} s_{i}*s_{i}}{2}(这里不包含根节点)i=1nj=sonsjk=sonk<jsk=2i=1nj=sonsj(si1sj)=2i=2nsi+2i=1nsi(si1)2i=2nsisi(这里不包含根节点)
化简一下即为 n2n^{2}n2级别!

http://www.dtcms.com/a/408406.html

相关文章:

  • 镇江网站建站汉中网站建设费用
  • 网站建设dwm注册域名dns
  • 怎样创建网站和网页做网站吧
  • 如何搞好职业学校网站的建设和管理宣传片制作标准
  • 响应式网站推广wordpress 图片加载慢
  • 昭通商城网站建设最美logo图案大全
  • 比较优秀的国外wordpress网站phpcms对比wordpress
  • 网站建设手机登录密码是什么啊电脑做网站服务器教程
  • 兰州大学网页与网站设计企业培训考试系统
  • 大型摔倒检测识别数据集:3类,近7w图像,yolo标注
  • 老题新解|素数回文数的个数
  • 东莞市网站seowordpress音乐站源码
  • 模板网站制作多少钱推广普通话宣传周
  • MySQL-多版本并发控制
  • 防火墙(1)了解防火墙
  • 做后期哪个网站素材好网站作品怎么做链接
  • 制冷机电工程东莞网站建设网站建设服务市场细分
  • 美食网站开发现状设计页面ui
  • 做PPT哪个网站的素材多点晋江网站建设企业
  • 邯郸网站建设网页设计网络推广宁波城乡住房建设局网站
  • 广州天河建站公司鲜花网站开发背景
  • LeetCode 102. 二叉树的层序遍历
  • 网站建设风景课程设计报告网店设计风格怎么写
  • 做网站被网警找六感程序网站建设
  • 网站建设制作官网哈尔滨cms模板建站
  • 数据分析师资源合集
  • 静态网站怎么建设广告网站建设制作设计服务商
  • 网站建设及政务公开工作总结中文旅游网站模板下载
  • docker-镜像
  • 常用外贸网站网站死链检测