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

贵阳网站建设技术托管佛山市seo推广

贵阳网站建设技术托管,佛山市seo推广,学校网站网页模板,做网站中心上一次我们讲了二叉苹果树#xff0c;现在我们加一点难度#xff0c;从二叉变成了多叉苹果树。 这样子我们就不可以直接按照上次的方法DP#xff0c;我们其实可以发现#xff0c;我们可以用类似背包的思想求解#xff0c;这就是所谓的树上背包。 我们先加进第一个儿子来…上一次我们讲了二叉苹果树现在我们加一点难度从二叉变成了多叉苹果树。 这样子我们就不可以直接按照上次的方法DP我们其实可以发现我们可以用类似背包的思想求解这就是所谓的树上背包。 我们先加进第一个儿子来跟新1--m的解然后再让第二个进来更新这样子就求出来了。 下面是AC代码 #includebits/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].diany;edge[cnt].quanz;edge[cnt].nexthead[x];head[x]cnt; } void dfsquan(int root,int fa){for(int ihead[root];i!-1;iedge[i].next){if(edge[i].dianfa) continue;v[edge[i].dian]edge[i].quan;dfsquan(edge[i].dian,root);}return; } void dfsdp(int root,int fa){for(int jq1;j1;j--){dp[root][j]v[root];}dp[root][0]0;for(int ihead[root];i!-1;iedge[i].next){if(faedge[i].dian) continue;int ckckedge[i].dian;dfsdp(ckck,root);for(int jq1;j1;j--){for(int k0;kj-1;k){dp[root][j]max(dp[ckck][k]dp[root][j-k],dp[root][j]);}}} } int main(){cinnq;memset(head,-1,sizeof(head));for(int i1;in-1;i){cinxyz;merge(x,y,z);merge(y,x,z);}dfsquan(1,-1);dfsdp(1,-1);coutdp[1][q1]; } 这里有两点注意 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代码 #includebits/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].diany;edge[cnt].nexthead[x];head[x]cnt; } void dfsdp(int root,int fa){dp[root]a[root];ansmax(ans,a[root]);for(int ihead[root];i!-1;iedge[i].next){if(edge[i].dianfa) continue;dfsdp(edge[i].dian,root);ansmax(ans,dp[edge[i].dian]);ansmax(ans,dp[root]dp[edge[i].dian]);dp[root]max(dp[root],a[root]dp[edge[i].dian]);}return; } signed main(){cinn;memset(head,-1,sizeof(head));for(int i1;in;i){scanf(%lld,a[i]);}for(int i1;in-1;i){scanf(%lld%lld,u,v);merge(u,v);merge(v,u);}dfsdp(1,-1);coutans; }
http://www.w-s-a.com/news/136356/

相关文章:

  • 湖北现代城市建设集团网站搜索引擎优化的作用
  • 上海做网站吧开一家软件开发公司需要什么
  • 阿里巴巴网站建设改图片建设厅官方网站河南
  • 邓砚谷电子商务网站建设镇江网
  • 网站空间支持什么程序工作服款式
  • 网站单页品牌网站建设 蝌蚪5小
  • 怎么做外贸网站需注意哪些做电脑系统的网站
  • 网站建设介绍推广用语河南网站优化外包服务
  • 课程网站模板贵州省城乡与建设厅网站
  • 网站模板及源码谁家网站用户体验做的好
  • 做网站的技术要求搜索栏在wordpress菜单上位置
  • 如何给网站弄ftpwordpress怎么添加关键词描述
  • 成都工程建设信息网站金科网站建设
  • 传媒公司 网站开发厦门网站建设门户
  • 宿城区建设局网站做网站的绿色背景图
  • 网站空间托管合同 .doc网站开发团队 组建
  • 网站建设书本信息it运维服务
  • 四核网站建设设计网站流程
  • ui设计网站设计与网页制作视频教程wordpress插件漏洞利用
  • 网站建设公司排名前十做网站的最终目的
  • 选择网站开发公司的标准中国网站建设市场规模
  • 衣服网站建设策划书广州住房和城乡建设部网站
  • 微商城科技淄博网站建设优化seo
  • 杭州 网站设计制作东圃手机网站开发
  • 网站文章页内链结构不好可以改吗微信平台如何开发
  • 炫酷业务网站课程网站如何建设方案
  • 网站建设服务器可以租吗wordpress微信打赏
  • 网站制作的重要流程图大连网站优化快速排名
  • 河南省住房建设厅官方网站注册公司邮箱需要什么
  • 美橙网站注册华为手机网站建设策划方案论文