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

养生网站模板宜昌市做网站

养生网站模板,宜昌市做网站,酒店网络营销推广方式,动态站 网站地图怎么做题目链接#xff1a;https://www.lydsy.com/JudgeOnline/problem.php?id4557 题意概述#xff1a; 给出一棵树#xff0c;每个点付出代价w[i]可以控制距离和它不超过d的点#xff0c;现在给出一些点#xff0c;问控制这些点的最小代价是多少。 分析: 观察一下数据范围发现… 题目链接https://www.lydsy.com/JudgeOnline/problem.php?id4557   题意概述   给出一棵树每个点付出代价w[i]可以控制距离和它不超过d的点现在给出一些点问控制这些点的最小代价是多少。   分析:   观察一下数据范围发现算算法的复杂度可能和d有关。横看竖看这像是一个树形dp所以我们就把d搞到状态方程里面去嘛怎么就完全没有想到呢......   既然要用树形dp就要先分析一下性质。   一个点如果被选择成为控制点那么它可以控制的点有子树中深度不超过d的点祖先中和它距离不超过d的点以及祖先的子树中的一些点。   感觉很麻烦的样子......因为对于那些祖先子树中的点控制的方向突然向上又向下了。   我们考虑到常用的技巧在树形dp中如果两个点会对答案产生贡献我们在其LCA处统计贡献。于是我们设两个dp方程   f(i,x)表示i点的子树中需要被控制的点全部被控制还可以向上控制x层的最小代价g(i,x)表示i点的子树中x层及以下需要被控制的点全部被控制的最小代价。   需要向上控制x层那么儿子中就需要有点可以向上控制x 1层的点被选择对于新来的子树j有两种情况一个是我们需要的点在这个新的子树中一个是我们需要的点在原来的子树中。   f(i,x)min(f(i,x)g(j,x),f(j,x1)g(i,x1))   init一开始把每点i当成孤点那么向上控制1~d层就只有靠自己f值初始化为w[i]f[i][0],g[i][0]根据这个点本身是否需要监视来判断。   但是注意答案在控制的长度恰好为x的时候不一定是最优的可能稍微控制的长度大一点答案反而更优于是把方程的意义改一下改成至少控制x层。   g(i,x)sum{g(j,x-1)|i-j},g(i,0)f(i,0)   小技巧怎么维护至少这个性质和看起来更劣的状态取min即可。     1 #includeiostream2 #includecstdio3 #includecstring4 #includecstdlib5 #includealgorithm6 #includecmath7 #includequeue8 #includeset9 #includemap 10 #includevector 11 #includecctype 12 #define inf 1e9 13 using namespace std; 14 const int maxn500005; 15 const int maxd25; 16 17 int N,D,M,W[maxn]; 18 struct edge{ int to,next; }E[maxn1]; 19 int first[maxn],np,f[maxn][maxd],g[maxn][maxd]; 20 bool ob[maxn]; 21 22 void _scanf(int x) 23 { 24 x0; 25 char chgetchar(); 26 while(ch0||ch9) chgetchar(); 27 while(ch0ch9) xx*10ch-0,chgetchar(); 28 } 29 void add_edge(int u,int v) 30 { 31 E[np](edge){v,first[u]}; 32 first[u]np; 33 } 34 void data_in() 35 { 36 _scanf(N);_scanf(D); 37 for(int i1;iN;i) _scanf(W[i]); 38 _scanf(M); 39 int x,y; 40 for(int i1;iM;i){ 41 _scanf(x); ob[x]1; 42 } 43 for(int i1;iN;i){ 44 _scanf(x);_scanf(y); 45 add_edge(x,y); add_edge(y,x); 46 } 47 } 48 void DFS(int i,int fa) 49 { 50 for(int d1;dD;d) f[i][d]W[i]; 51 f[i][D1]inf; 52 if(ob[i]) f[i][0]g[i][0]W[i]; 53 for(int pfirst[i];p;pE[p].next){ 54 int jE[p].to; 55 if(jfa) continue; 56 DFS(j,i); 57 for(int d0;dD;d) 58 f[i][d]min(f[i][d]g[j][d],f[j][d1]g[i][d1]); 59 for(int dD;d0;d--) f[i][d]min(f[i][d],f[i][d1]); 60 g[i][0]f[i][0]; 61 for(int d1;dD;d) g[i][d]g[j][d-1]; 62 for(int d1;dD;d) g[i][d]min(g[i][d],g[i][d-1]); 63 } 64 } 65 void work() 66 { 67 DFS(1,0); 68 printf(%d\n,f[1][0]); 69 } 70 int main() 71 { 72 data_in(); 73 work(); 74 return 0; 75 } View Code   转载于:https://www.cnblogs.com/KKKorange/p/8678650.html
http://www.zqtcl.cn/news/99453/

相关文章:

  • wordpress怎么设计网站微商城科技
  • 昆山营销型网站建设旅游网页制作模板教程
  • 企业网站开发时间淘客网站开发源代码
  • 传奇世界新开服网站html静态网页模板代码
  • 门户网站app开发网络服务提供者发现未成年通过网络发布
  • 编辑网站在线注册系统行业网站制作
  • 国外建设网站的软件西宁设计网站建设
  • 云服务器网站配置在线设计免费logo
  • 怎么在手机上做企业网站北京大学两学一做网站
  • 社区网站建设方案书服务型网站建设的主题
  • 做淘推广的网站如何制作表白链接
  • 外贸网站代码中国建设银行招聘网站甘肃分行
  • 免费ai设计logo网站西安网站开发外包公司有
  • 2017优秀网站设计欣赏如何做建议的网站
  • 获取网站访问qq怎么做链接
  • 最简单的网站建设中英文自助网站建设
  • vps 做网站品牌网站建设可信大蝌蚪
  • 怎样在百度建网站怎么建设课题网站
  • 广西网站设计欣赏企业网站建设的管理制度
  • 网站建设与管理提纲免费编程教学视频
  • 做效果图的网站有哪些推广网站详细教程
  • 2.0网站线上建设什么意思WordPress怎么设置分类
  • 湖南众诚建设 官方网站开发者模式是干什么的
  • o2o平台都有哪些网站公司莱芜网站优化方案
  • 个人或主题网站建设 实验体会网站开发可退税
  • 龙岗同乐社区做网站昆明发布最新通告
  • 能进外国网站看视频的浏览器wordpress 信息流
  • 怎样做自己介绍网站昆明网红打卡地有哪些地方
  • 一个外国人做汉字网站广州近期流行的传染病
  • 做pc端网站新闻pdf 网站建设