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

电子商务网站建设结论北京建设大厦

电子商务网站建设结论,北京建设大厦,莱芜雪野湖鱼头,哪里可以免费推广广告problem 给定 nnn 个城市#xff0c;n−1n-1n−1 条道路#xff0c;形成一棵树。每座城市上的人口为 wiw_iwi​。 现要修建若干个中心城镇#xff0c;满足任意两个中心城镇之间的距离严格大于 kkk。 最大化中心城镇的总人口。 n,k≤106,wi≤109n,k\le 10^6,w_i\le 10^9n,…problem 给定 nnn 个城市n−1n-1n−1 条道路形成一棵树。每座城市上的人口为 wiw_iwi​。 现要修建若干个中心城镇满足任意两个中心城镇之间的距离严格大于 kkk。 最大化中心城镇的总人口。 n,k≤106,wi≤109n,k\le 10^6,w_i\le 10^9n,k≤106,wi​≤109。 solution 这种限制树上关键点彼此之间距离是比较经典的题目了通常都会考虑 uuu 子树内离 uuu 最近的关键点的距离为多少设计状态转移方程。 有非常套路的树背包设 fu,i:uf_{u,i}:ufu,i​:u 子树内离 uuu 最近的关键点深度为 iii此深度是以 111 为根意义下在整棵大树中的深度的最多人口数。 有 fu,0wuf_{u,0}w_ufu,0​wu​。考虑逐个加入 uuu 的子树 vvv。 (i−dep[u])1k(i-dep[u])1k(i−dep[u])1k gu,i←fu,ifv,ig_{u,i}\leftarrow f_{u,i}f_{v,i}gu,i​←fu,i​fv,i​ (i−dep[u])1≤k(i-dep[u])1\le k(i−dep[u])1≤k gu,imax⁡{gu,i1,fu,ifv,k2dep[u]−i1,fu,l2dep[u]−i1fv,i}g_{u,i}\max\Big\{g_{u,i1},f_{u,i}f_{v,k2dep[u]-i1},f_{u,l2dep[u]-i1}f_{v,i}\Big\}gu,i​max{gu,i1​,fu,i​fv,k2dep[u]−i1​,fu,l2dep[u]−i1​fv,i​} gu,dep[u]max⁡{gu,dep[u]1,fu,0fv,depuk1}g_{u,dep[u]}\max\Big\{g_{u,dep[u]1},f_{u,0}f_{v,dep_uk1}\Big\}gu,dep[u]​max{gu,dep[u]1​,fu,0​fv,depu​k1​} 最后更新回去 f←gf\leftarrow gf←g。 所求即为 f1,0f_{1,0}f1,0​。 事实上有用的只有 i∈[dep[u],dep[u]k]i\in\big[dep[u],dep[u]k\big]i∈[dep[u],dep[u]k]这是 O(nk)O(nk)O(nk) 的。 事实上有用的只有 i∈[dep[u],dep[u]lenu]i\in\big[dep[u],dep[u]len_u\big]i∈[dep[u],dep[u]lenu​]其中 lenu:ulen_u:ulenu​:u 子树的高度链长度长链剖分优化时间复杂度就只有 O(n)O(n)O(n)。 fu,i:uf_{u,i}:ufu,i​:u 子树内离 uuu 最近的关键点二者的相对距离为 iii 的最多人口数。 excuse me 动态数组我真的会谢卷爷 vector\text{vector}vector 都能跑过去这是什么人啊 code(vector—MLE) #include bits/stdc.h using namespace std; #define maxn 1000005 #define int long long vector int G[maxn], f[maxn]; int n, k, ans; int w[maxn], g[maxn], len[maxn], son[maxn];void dfs1( int u, int fa ) {for( int v : G[u] ) {if( v fa ) continue;else dfs1( v, u );if( len[son[u]] len[v] ) son[u] v;}len[u] len[son[u]] 1; }void dfs2( int u, int fa ) {f[u].resize( len[u] 1 );f[u][0] w[u];if( son[u] ) {dfs2( son[u], u );for( int i 1;i len[u];i ) f[u][i] f[son[u]][i - 1];if( k len[u] ) f[u][0] f[son[u]][k - 1];f[u][0] max( f[u][0], f[son[u]][0] );}ans max( ans, f[u][0] );for( int v : G[u] ) {if( v fa or v son[u] ) continue;else dfs2( v, u );for( int i 0;i len[v];i ) g[i] f[u][i];for( int i 0;i k and i len[v];i ) {if( i ( k 1 ) ) {if( i ) g[i] f[v][i - 1];}else {if( 0 k - i - 1 and k - i - 1 len[v] )g[i] max( g[i], f[u][i] f[v][k - i - 1] );if( 0 i - 1 and k - i len[u] )g[i] max( g[i], f[u][k - i] f[v][i - 1] );}if( i ) g[i] max( g[i], f[v][i - 1] );}for( int i len[v];~ i;i -- ) {f[u][i] g[i];if( i 1 len[u] ) f[u][i] max( f[u][i], f[u][i 1] );ans max( ans, f[u][i] );}} }signed main() {scanf( %lld %lld, n, k ); k ;for( int i 1;i n;i ) scanf( %lld, w[i] );for( int i 1, u, v;i n;i ) {scanf( %lld %lld, u, v );G[u].push_back( v );G[v].push_back( u );}dfs1( 1, 0 );dfs2( 1, 0 );printf( %lld\n, ans );return 0; }code(动态数组—AC) #include bits/stdc.h using namespace std; #define maxn 1000005 #define int long long vector int G[maxn]; int *f[maxn], *ip; int pos[maxn 2]; int n, k, ans; int w[maxn], g[maxn], len[maxn], son[maxn];void dfs1( int u, int fa ) {for( int v : G[u] ) {if( v fa ) continue;else dfs1( v, u );if( len[son[u]] len[v] ) son[u] v;}len[u] len[son[u]] 1; }void dfs2( int u, int fa ) {// f[u].resize( len[u] 1 );f[u][0] w[u];if( son[u] ) {f[son[u]] f[u] 1;dfs2( son[u], u );// for( int i 1;i len[u];i ) f[u][i] f[son[u]][i - 1];if( k len[u] ) f[u][0] f[son[u]][k - 1];f[u][0] max( f[u][0], f[son[u]][0] );}ans max( ans, f[u][0] );for( int v : G[u] ) {if( v fa or v son[u] ) continue;else f[v] ip, ip len[v], dfs2( v, u );for( int i 0;i len[v];i ) g[i] f[u][i];for( int i 0;i k and i len[v];i ) {if( i ( k 1 ) ) {if( i ) g[i] f[v][i - 1];}else {if( 0 k - i - 1 and k - i - 1 len[v] )g[i] max( g[i], f[u][i] f[v][k - i - 1] );if( 0 i - 1 and k - i len[u] )g[i] max( g[i], f[u][k - i] f[v][i - 1] );}if( i ) g[i] max( g[i], f[v][i - 1] );}for( int i len[v];~ i;i -- ) {f[u][i] g[i];if( i 1 len[u] ) f[u][i] max( f[u][i], f[u][i 1] );ans max( ans, f[u][i] );}} }signed main() {scanf( %lld %lld, n, k ); k ;for( int i 1;i n;i ) scanf( %lld, w[i] );for( int i 1, u, v;i n;i ) {scanf( %lld %lld, u, v );G[u].push_back( v );G[v].push_back( u );}dfs1( 1, 0 );ip pos;f[1] ip;ip len[1];dfs2( 1, 0 );printf( %lld\n, ans );return 0; }
http://www.zqtcl.cn/news/63093/

相关文章:

  • 网站改版阿里云怎么做网站301定向推广的含义
  • 网站模板上传教程做网站需要服务器和什么软件
  • 做牙厂的网站营销网站的优势是什么意思
  • 网站排名优化培训课程网页开发代码
  • 最专业的网站建设公司哪家好网站移动页面怎么做
  • 建站快车3d模型免费素材网站
  • 模板wordpress演示站怎么做网络营销的特点及形式
  • 网站开发公司哪里好wap网站推广方法
  • 网站数据做面板分析没有网站怎么做cpa广告
  • 广东省城乡建设厅投诉网站受欢迎的商城网站建设
  • 电子商务网站建设报价表刚做的网站为什么搜索不到
  • 桐乡市城市规划建设局网站中企动力网站模板
  • 搜索关键词可以过得网站苏州工业园区gdp
  • 59网站一起做网店普宁山东网站建设公司排名
  • 浙江网站建设广告语网站建设与网络营销
  • 网络优化公司网站代码电商网站建设实训步骤
  • 电子商务网站建设与实践网站访客分析
  • 徐州建设厅网站无锡个人网站制作
  • 桂林漓江景点介绍南宁seo建站
  • 软件外包网站wordpress 考试
  • 合肥网站建设哪里好链交换反应
  • 浅谈你对大学校园网站建设的建议阿里巴巴网站本土化建设
  • 百度商桥要怎么添加到网站公众号平台登录
  • html网站列表怎么做企业建设一个自己的网站多少钱
  • 亚马逊如何做站外促销网站成都防疫最新动态
  • 东莞seo网站排名wordpress商店模板
  • iis怎么做网站互联网行业发展
  • 网站开辟两学一做专栏海淘网站开发
  • 怎么弄免费的php空间做网站徐州手机网站建设
  • 网站开发及服务合同网站建设方案书备案