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

专门做加盟的网站/市场营销推广策划方案

专门做加盟的网站,市场营销推广策划方案,百度网址大全下载,个人网站栏目设计Description 给一棵n 个结点的有根树,结点由1 到n 标号,根结点的标号为1。每个结点上有一个物品,第i 个结点上的物品价值为vi。 你需要从所有结点中选出若干个结点,使得对于任意一个被选中的结点,其到根的路径上所有…

Description

给一棵n 个结点的有根树,结点由1 到n 标号,根结点的标号为1。每个结点上有一个物品,第i 个结点上的物品价值为vi。
你需要从所有结点中选出若干个结点,使得对于任意一个被选中的结点,其到根的路径上所有的点都被选中,并且选中结点的个数不能超过给定的上限lim。在此前提下,你需要最大化选中结点上物品的价值之和。
求这个最大的价值之和。

Solution

一道很显然的树形DP,但分析复杂度发现为O(n3),过不了。
这是优化一下:
每次往下走的时候,把当前点的信息下传,下面做完以后再传上来,

复杂度:O(n2)

Code

Code From CTY:

#include<cstdio>
#include<cstring>
#include<algorithm>
#define fo(i,a,b) for(int i=a;i<=b;i++)
#define rep(i,a) for(int i=last[a];i;i=next[i])
#define N 3005
using namespace std;
int n,k,x,y,l,v[N],f[N][N];
int last[N],next[N*2],t[N*2];
void add(int x,int y) {t[++l]=y;next[l]=last[x];last[x]=l;
}
void dfs(int x,int y) {rep(i,x) if (t[i]!=y) {fo(j,0,k-1) f[t[i]][j]=f[x][j]+v[t[i]];dfs(t[i],x);fo(j,1,k) f[x][j]=max(f[x][j],f[t[i]][j-1]);}
}
int main() {freopen("tree.in","r",stdin);freopen("tree.out","w",stdout);scanf("%d%d",&n,&k);fo(i,1,n) scanf("%d",&v[i]);fo(i,1,n-1) scanf("%d%d",&x,&y),add(x,y),add(y,x);dfs(1,0);printf("%d",f[1][k-1]+v[1]);
}
http://www.jmfq.cn/news/5089699.html

相关文章:

  • 代理服务器地址大全/seo站长网怎么下载
  • 西安保洁公司网站建设/最近实时热点新闻事件
  • 重庆潼南网站建设哪家便宜/网络营销推广是做什么的
  • 怎样建设邮箱网站/seo网站优化价格
  • 天津网站建设公司排名/网站推广文章
  • 九江 网站建站 设计 公司/西安网站到首页排名
  • 亳州网站网站建设/百度权重域名
  • 上海浦东新区科技网站建设/网络营销师证书有用吗
  • 香港网站没有icp备案吗/河北网站seo策划
  • 设计头条/seo推广专员招聘
  • 天河网站建设制作/网站建设的推广渠道
  • 四川做网站设计哪家好/竞价服务托管价格
  • 企业信息信用系统/不错宁波seo公司
  • 网站的当前位置导航如何做/it培训机构学费一般多少
  • 义乌制作网站/镇江关键字优化品牌
  • 企业网站建设顾问/网络科技有限公司
  • 有没有好网站推荐/做app推广去哪找商家
  • 个人工作室经营范围/seo服务哪家好
  • 阿里云网站建设详细教程/百度移动端关键词优化
  • 广州做网站的公司有哪些/代写文章
  • 做试卷挣钱的网站/靠谱的代写平台
  • 美食网站建设的重要性/软文推广网站
  • 南京高端网站制作/企业推广网络营销
  • 网页版微信下载/百度seo优化推广公司
  • 来年做那些网站能致富/google play下载安卓
  • 网站视频下载/网站首页的优化
  • wordpress微信采集器/网站优化 seo和sem
  • 服务器上做网站/竞价排名软件
  • 中山英文网站建设/爱站网关键词搜索工具
  • 邢台信息港招聘/seo排名优化课程