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

建一个网站式系统自贡彩灯制作公司

建一个网站式系统,自贡彩灯制作公司,网站官网域名要多少钱,网站建设需要啥题意 一颗树 n n n 个点#xff0c; n − 1 n-1 n−1 条边#xff0c;经过每条边都要花费一定的时间#xff0c;任意两个点都是联通的。 有 k k k 个人#xff08;分布在 k k k 个不同的点#xff09;要集中到一个点举行聚会。 聚会结束后需要一辆车从举行聚会的这点…题意 一颗树 n n n 个点 n − 1 n-1 n−1 条边经过每条边都要花费一定的时间任意两个点都是联通的。 有 k k k 个人分布在 k k k 个不同的点要集中到一个点举行聚会。 聚会结束后需要一辆车从举行聚会的这点出发把这 K K K 个人分别送回去。 请你回答对于 i 1 ∼ n i1 \sim n i1∼n 如果在第 i i i 个点举行聚会司机最少需要多少时间把 k k k 个人都送回家。 1 ≤ k ≤ n ≤ 5 × 1 0 5 1 \le k \le n \leq 5\times 10^5 1≤k≤n≤5×105 1 ≤ x , y ≤ n 1 \le x,y \le n 1≤x,y≤n 1 ≤ z ≤ 1 0 8 1 \le z \le 10^8 1≤z≤108 。 思路 这是一道换根dp 直接计算从一个点出发经过所有家之后最后在一个点停下的最短路程是比较难的。但是可以维护从一个点出发再回到自己的最短路程减去该点到其中一个家的最长链那也是答案。 第一个dfs 经典地先用第一个dfs处理子树内信息。 用 v i s u vis_u visu​标记 u u u是否为一个家 s v u sv_u svu​表示 u u u子树内有多少有家之人。 令 g u g_u gu​表示在 u u u子树内从 u u u出发走完所有有家之人再回到 u u u的最短距离那么在处理边 ( u , v ) (u,v) (u,v)边权为 w w w时有 g u 2 w ∑ v ∈ s o n u g v g_u2w\sum_{v\in son_u}g_v gu​2wv∈sonu​∑​gv​ w w w要乘 2 2 2是因为要走来回。 那么到维护最长链了先维护子树内的最长链不过为了在第2次dfs中处理全局的最长链信息涉及到两个点 ( u , v ) (u,v) (u,v)的次序问题即 u u u成为 v v v子树内的一点还需要维护一个次长链来保证正确性。 令 D u D_u Du​表示 u u u节点开始子树内最长链 s D u sD_u sDu​表示 u u u节点开始子树内次长链可以用一个 n x u nx_u nxu​记录该最长链上 u u u的下一个节点因为在最长链上任一节点 x x x子树的、由 x x x开始的最长链必然与 u u u开始的最长链重合 void dfs1(ll u,ll fa) {if(vis[u])sv[u]1;for(int ihead[u];i;ie[i].next){ll ve[i].to,we[i].w;if(vfa)continue;dfs1(v,u);if(sv[v]){g[u]g[v]2*w;if(wD[v]D[u]){sD[u]D[u];D[u]wD[v];nx[u]v;}else if(wD[v]sD[u])sD[u]wD[v];}sv[u]sv[v];} }第二个dfs 在第二个dfs中我们将处理整棵树内的信息了。 令 f u f_u fu​表示在整棵树中从 u u u出发走完所有有家之人再回到自己的最短路程。 在第一个dfs中我们记录了 s v u sv_u svu​表示 u u u子树内有多少有家之人对于一个节点 u u u和后继结点 v v v考虑利用 s v u sv_u svu​或 s v v sv_v svv​进行分类讨论 s v v k sv_vk svv​k 那么和子树的情况没有区别也不必更新最长链、次长链了直接 f v g v f_vg_v fv​gv​即可。 s v v 0 sv_v0 svv​0 那么说明 v v v的子树内没有人有家在第一次dfs时 u u u并没有往 v v v的方向更新。此处可以看作 u u u是在 v v v的子树内需要倒着用 u u u来更新 v v v。并且可以直接更新比大小都可以不需要qwq 其余情况 u u u和 v v v子树内都有有家之人。设最长链分布如图所示 设 w w w为边 ( u , v ) (u,v) (u,v)的边权 更新 D v D_v Dv​ 若 D u w ≥ D v D_uw \ge D_v Du​w≥Dv​且 n x u ≠ v nx_u \ne v nxu​v即 v v v不在 u u u的原本的最长链上直接更新 D v D_v Dv​若 n x u v nx_uv nxu​v则不能更新。 若 s D u w ≥ D v sD_uw \ge D_v sDu​w≥Dv​并没有影响直接继承即可。 更新 s D v sD_v sDv​ 与上相同 void dfs2(ll u,ll fa) {for(int ihead[u];i;ie[i].next){ll ve[i].to,we[i].w;if(vfa)continue;if(!sv[v])//v子树内无家倒着更新 {if(D[u]wD[v]){sD[v]D[v];D[v]D[u]w;f[v]f[u]2*w;} }else if(k-sv[v]0)f[v]g[v];else //更新D(v) {f[v]f[u];if(D[u]wD[v]nx[u]!v){sD[v]D[v];D[v]D[u]w;nx[v]u;}else if(sD[u]wD[v]){sD[v]D[v];D[v]sD[u]w;nx[v]u;}else if(D[u]wsD[v]nx[u]!v)sD[v]D[u]w;else if(sD[u]wsD[v])sD[v]sD[u]w;}dfs2(v,u);} }代码 #includebits/stdc.h using namespace std; #define ll long long const ll N5e59; ll n,k; ll idx,head[N]; ll sv[N],vis[N],D[N],sD[N],nx[N],f[N],g[N]; //sv(u):u子树内总共多少有家之人 //D/sD(u):u起点最长次长链 //nx(u): 最长链上下一个节点 //g(u):u子树内走完所有有家之人回u的最短距离 //f(u):整棵树内走完所有有家之人回u的最短距离 struct edge {ll to,next,w; }e[N1]; void addedge(ll u,ll v,ll w) {idx;e[idx].tov;e[idx].nexthead[u];e[idx].ww;head[u]idx; } void dfs1(ll u,ll fa) {if(vis[u])sv[u]1;for(int ihead[u];i;ie[i].next){ll ve[i].to,we[i].w;if(vfa)continue;dfs1(v,u);if(sv[v]){g[u]g[v]2*w;if(wD[v]D[u]){sD[u]D[u];D[u]wD[v];nx[u]v;}else if(wD[v]sD[u])sD[u]wD[v];}sv[u]sv[v];} } void dfs2(ll u,ll fa) {for(int ihead[u];i;ie[i].next){ll ve[i].to,we[i].w;if(vfa)continue;if(!sv[v])//v子树内无家倒着更新 {if(D[u]wD[v]){sD[v]D[v];D[v]D[u]w;f[v]f[u]2*w;} }else if(k-sv[v]0)f[v]g[v];else //更新D(v) {f[v]f[u];if(D[u]wD[v]nx[u]!v){sD[v]D[v];D[v]D[u]w;nx[v]u;}else if(sD[u]wD[v]){sD[v]D[v];D[v]sD[u]w;nx[v]u;}else if(D[u]wsD[v]nx[u]!v)sD[v]D[u]w;else if(sD[u]wsD[v])sD[v]sD[u]w;}dfs2(v,u);} } int main() {scanf(%lld%lld,n,k);for(int i1;in;i){ll u,v,w;scanf(%lld%lld%lld,u,v,w);addedge(u,v,w);addedge(v,u,w);}for(int i1;ik;i){ll u;scanf(%lld,u);vis[u]1;}dfs1(1,0);f[1]g[1];dfs2(1,0);for(int i1;in;i)printf(%lld\n,f[i]-D[i]);return 0; }
http://www.hkea.cn/news/14359998/

相关文章:

  • 南浦电商网站建设wordpress记录访问量
  • 网站开发要跑道吗建设网站赚钱
  • 什么是品牌网站建设网站开发公司商业计划书
  • 武威市建设厅网站电商小程序多少钱
  • 网红网站建设官网广州企业宣传片制作公司
  • 公司网站建立宜兴建设局的网站
  • 深圳网站建设品牌t恤定制网站哪个好
  • 十堰网站建设费用临沂网站设计哪家好
  • 如何手机创建网站网站建设硬件环境
  • 上海网站建设免费推小包工头怎么注册公司
  • 藁城专业网站建设杭州桐庐网站建设
  • 鼎诚网站建设云南网站建设方案
  • 网站建设 保定网页设计师培训 网页设计师培训
  • 学校做好网站建设目的海南三亚做网站
  • 正规网站优化推广门户网站 开发语言
  • 河北云建站h5怎么设计网页
  • 电子商务网站建设与管理试题答案网页制作作品欣赏
  • 河东集团网站建设网站如何重新备案
  • 自己做的网站不显示图片哔哩哔哩网页版稍后再看在哪里
  • 如何使用ps做网站饶平网站建设公司
  • 企业网站写好如何发布怎样看网站是谁做的
  • 普洱做网站的报价广州软件开发培训机构有哪些
  • 重庆网站平台好网站推荐
  • 3d地图网站模板html海口智能建站模板
  • 网站建设 有限公司微信小程序项目开发
  • 我的世界做弊端网站哪里有网站建设加盟合作
  • 大连网站建设好的公司做网站文件下载
  • 网站如何在360上做推广扬州做网站的公司哪个好
  • 西安专业网站建设公司做餐饮类网站用哪个程序
  • 网站建设需要的技术设备快速建立平台网站开发建站教程详解