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

美女做那种视频网站盐城seo网站优化软件

美女做那种视频网站,盐城seo网站优化软件,做亚马逊和淘宝网站,石家庄最好的网站建设公司上一次我们讲了二叉苹果树,现在我们加一点难度,从二叉变成了多叉苹果树。 这样子我们就不可以直接按照上次的方法DP,我们其实可以发现,我们可以用类似背包的思想求解,这就是所谓的树上背包。 我们先加进第一个儿子来…

上一次我们讲了二叉苹果树,现在我们加一点难度,从二叉变成了多叉苹果树。

这样子我们就不可以直接按照上次的方法DP,我们其实可以发现,我们可以用类似背包的思想求解,这就是所谓的树上背包。

我们先加进第一个儿子来跟新1--m的解,然后再让第二个进来更新,这样子就求出来了。

下面是AC代码:

#include<bits/stdc++.h>
using namespace std;
int n,q,x,y,head[200],v[200],cnt,z,dp[110][110];
struct node{int dian,next,quan;
}edge[210];
void merge(int x,int y,int z){edge[++cnt].dian=y;edge[cnt].quan=z;edge[cnt].next=head[x];head[x]=cnt;
}
void dfsquan(int root,int fa){for(int i=head[root];i!=-1;i=edge[i].next){if(edge[i].dian==fa) continue;v[edge[i].dian]=edge[i].quan;dfsquan(edge[i].dian,root);}return;
}
void dfsdp(int root,int fa){for(int j=q+1;j>=1;j--){dp[root][j]=v[root];}dp[root][0]=0;for(int i=head[root];i!=-1;i=edge[i].next){if(fa==edge[i].dian) continue;int ckck=edge[i].dian;dfsdp(ckck,root);for(int j=q+1;j>=1;j--){for(int k=0;k<=j-1;k++){dp[root][j]=max(dp[ckck][k]+dp[root][j-k],dp[root][j]);}}}
}
int main(){cin>>n>>q;memset(head,-1,sizeof(head));for(int i=1;i<=n-1;i++){cin>>x>>y>>z;merge(x,y,z);merge(y,x,z);}dfsquan(1,-1);dfsdp(1,-1);cout<<dp[1][q+1];
}

这里有两点注意:

1.v[root]操作不应该放在循环里面,否则会重复操作(若为边权可以)

2.转移方程中应为dp[root][j-k]而不是dp[root][j-k-1],因为root时已经把root点算进去了,不用为root留空间。

接题:

其实我们可以不用DP:

我们可以先选任意一点DFS求出权值最大的子链,我们可以证明权值最大的子链的端点之一一定是这个DFS后的端点。

下面进行证明:

我们再来看看树形DP的解法:

我们令f[i]表示以i为根的子树的最大子链,有两种情况,1.它经过i 2.他没有经过

对于经过i,我们只要把以i为起点DFS的最大长度与第二大长度相加即可。

这里我们可以简化一下:

我们令ans为答案值,dp[i]为以i为起点的最大权值,我们在求dp[i]的同时维护ans即可。

其中相加操作dp[i]记录了到目前为止的最大值(有点类似背包),通过dp[i]+dp[v]就实现了最大值与次大值相加的操作,最后维护一下dp[i]即可。

下面是AC代码:

#include<bits/stdc++.h>
using namespace std;
#define int long long
struct node1{int dian,next;
}edge[200010];
int head[100010],n,a[100010],cnt,u,v,dp[100010],ans=-10000000;
void merge(int x,int y){edge[++cnt].dian=y;edge[cnt].next=head[x];head[x]=cnt;
}
void dfsdp(int root,int fa){dp[root]=a[root];ans=max(ans,a[root]);for(int i=head[root];i!=-1;i=edge[i].next){if(edge[i].dian==fa) continue;dfsdp(edge[i].dian,root);ans=max(ans,dp[edge[i].dian]);ans=max(ans,dp[root]+dp[edge[i].dian]);dp[root]=max(dp[root],a[root]+dp[edge[i].dian]);}return;
}
signed main(){cin>>n;memset(head,-1,sizeof(head));for(int i=1;i<=n;i++){scanf("%lld",&a[i]);}for(int i=1;i<=n-1;i++){scanf("%lld%lld",&u,&v);merge(u,v);merge(v,u);}dfsdp(1,-1);cout<<ans;
}

http://www.mmbaike.com/news/90038.html

相关文章:

  • 怎么找网站是由什么建的免费推广自己的网站
  • 国家胸痛中心建设网站百度官方推广平台
  • 一级a视网站 做爰片免费优化网站排名
  • 做外贸通常用哪些网站网络推广员
  • 中英企业网站管理系统今日军事新闻视频
  • 织梦中英文版网站怎么做模板网站好还是自助建站好
  • 做金融怎么进基金公司网站百度关键词排名代做
  • 域名被锁定网站打不开培训机构排名前十
  • 网站推广费用台州seo服务
  • 餐饮行业做网站的好处google seo 优化
  • 成都知名建筑公司排名深圳网络seo推广
  • 网站制作费可以做业务宣传费灰色词网站seo
  • 低价格制作网站搜索引擎优化seo的英文全称是
  • 做网站 用 显示器百度推广可以自己开户吗
  • 沈阳网站建设 熊掌号浏览广告赚钱的平台
  • 外包公司做网站多少钱黑帽seo培训大神
  • wordpress 防采集插件高粱seo博客
  • 东莞疫情最新数据消息上海专业的seo公司
  • 网站会员注册怎么做seo的理解
  • 山东高端网站定制百度平台app下载
  • 营销型网站解决方案项目推广方案怎么写
  • 一套完整的app开发流程seo引擎优化培训
  • 哪家公司建换电站网店搜索引擎优化的方法
  • 梨树做网站人工智能培训课程
  • 成都小程序开发报价安卓优化大师手机版
  • 朝阳周边网站建设怎么seo网站排名
  • 鄂州网站推广优化技巧营销型网站建设的重要原则
  • 用dw做购票网站上海seo优化外包公司
  • 喀什地区建设局网站佛山百度推广电话
  • vps架设好网站访问不了seo专业推广