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

门户网站制作的公司网站关键词排名怎么提升

门户网站制作的公司,网站关键词排名怎么提升,免费制作软件app的网站,襄樊seo快速排名AGC034E Complete Compress 洛谷[AGC034E] Complete Compress 题目大意 给你一棵有 n n n个节点的树,并用 01 01 01串告诉你哪些节点上有棋子(恰好一棵)。 你可以进行若干次操作,每次操作可以将两颗距离至少为 2 2 2的棋子向彼…

AGC034E Complete Compress

洛谷[AGC034E] Complete Compress

题目大意

给你一棵有 n n n个节点的树,并用 01 01 01串告诉你哪些节点上有棋子(恰好一棵)。

你可以进行若干次操作,每次操作可以将两颗距离至少为 2 2 2的棋子向彼此移动一步。

问能否通过若干次操作使得所有的棋子都在一个点上。如果能,输出最小操作次数;否则,输出 − 1 -1 1

2 ≤ n ≤ 2000 2\leq n\leq 2000 2n2000

时间限制 3000 m s 3000ms 3000ms,空间限制 1024 M B 1024MB 1024MB


题解

我们可以枚举最后所有棋子聚集在哪个点,设这个点为 r r r,我们设 r r r为根。

d i s u dis_u disu表示 u u u的子树中每个棋子到 u u u的距离,那每一次操作会使 d i s r dis_r disr减少 2 2 2或者不变。我们发现, 如果不变的话,相当于浪费了一次,所以最优的肯定是选择减少 2 2 2

每次减少 2 2 2,要不是在 r r r的一个儿子的 d i s dis dis值减少 2 2 2,要不是在 r r r的两个儿子分别减少 1 1 1。我们考虑什么时候无解,无解就是子树不能抵消完。设 m n u mn_u mnu表示子树 u u u中的棋子在内部操作若干次,直到不能再操作时的 d i s u dis_u disu(也就是需要与其他子树操作的最小次数)。设 v v v u u u的儿子,我们比较 m n v + s i z v mn_v+siz_v mnv+sizv d i s u − d i s v − s i z v dis_u-dis_v-siz_v disudisvsizv的大小( s i z v siz_v sizv表示子树 v v v中的棋子个数):

  • 如果 m n v + s i z v ≤ d i s u − d i s v − s i z v mn_v+siz_v\leq dis_u-dis_v-siz_v mnv+sizvdisudisvsizv,那就是能抵消完,最后剩的就是 m n u = d i s u % 2 mn_u=dis_u\%2 mnu=disu%2
  • 如果 m n v + s i z v > d i s u − d i s v − s i z v mn_v+siz_v>dis_u-dis_v-siz_v mnv+sizv>disudisvsizv,就不能抵消完,那我们拿其他部分来抵消 m n v mn_v mnv m n u = m n v + s i z v − ( d i s u − d i s v − s i z v ) mn_u=mn_v+siz_v-(dis_u-dis_v-siz_v) mnu=mnv+sizv(disudisvsizv)

我们记录 u u u的所有儿子 v v v m n v + d i s v + 2 s i z v mn_v+dis_v+2siz_v mnv+disv+2sizv的最大值 m x u mx_u mxu,然后用这个最大值来与 d i s u dis_u disu作比较即可。

最后,看 m n r mn_r mnr是否为 0 0 0。如果为 0 0 0,则可以抵消完,则用 d i s r / 2 dis_r/2 disr/2来更新答案(这里的 d i s r dis_r disr是最开始的 d i s r dis_r disr);否则,以 r r r为最终聚集的点是无解的。

时间复杂度为 O ( n 2 ) O(n^2) O(n2)

可以参考代码帮助理解。

题外话:这道题还有加强版,题意相同但数据范围更大,加强版的题目和题解请看这篇博客。

code

#include<bits/stdc++.h>
using namespace std;
const int N=1000000;
int n,tot=0,d[2*N+5],l[2*N+5],r[N+5],dep[N+5],siz[N+5];
long long ans=1e18,dis[N+5],mn[N+5],mx[N+5];
char s[N+5];
void add(int xx,int yy){l[++tot]=r[xx];d[tot]=yy;r[xx]=tot;
}
void dfs(int u,int fa){siz[u]=(s[u]=='1');dis[u]=0;mn[u]=0;mx[u]=0;for(int i=r[u];i;i=l[i]){int v=d[i];if(v==fa) continue;dfs(v,u);siz[u]+=siz[v];dis[u]+=dis[v]+siz[v];long long tmp=dis[v]+siz[v]*2+mn[v];mx[u]=max(mx[u],tmp);}if(mx[u]<=dis[u]) mn[u]=dis[u]%2;else mn[u]=mx[u]-dis[u];
}
int main()
{scanf("%d",&n);scanf("%s",s+1);for(int i=1,x,y;i<n;i++){scanf("%d%d",&x,&y);add(x,y);add(y,x);}for(int i=1;i<=n;i++){dfs(i,0);if(mn[i]==0) ans=min(ans,dis[i]/2);}if(ans==1e18) printf("-1\n");else printf("%lld\n",ans);return 0;
}
http://www.shuangfujiaoyu.com/news/56982.html

相关文章:

  • 自己电脑做电影网站长尾关键词排名系统
  • 什么网站可以做国外生意百度收录入口提交查询
  • 做网站二级域名随便用吗江苏网络推广公司
  • 中国移动网站建设目前最好的引流推广方法
  • 北京经营性网站备案查询关键词排名方案
  • BC网站开发公司江北seo页面优化公司
  • 广州市安全教育平台武汉seo人才
  • 南做网站站长工具是干嘛的
  • 佛山市专注网站建设平台怎么提升关键词的质量度
  • 自学java 做网站 多久谷歌网站
  • 0基础 网站建设西安网站制作建设
  • 佛山格尔做网站的公司移动网站推广如何优化
  • 苏州商城网站建设电话搜索 引擎优化
  • 我爱我家二手房房源官网天津搜索引擎seo
  • 法治政府建设内容网站公开课企业培训课程视频
  • 网站建设公司愿景平台推广方式有哪些
  • 西安网站建设公司找哪家优化大师安卓版
  • 张掖网站制作聚名网域名
  • mysql网站数据库网络营销课程个人总结
  • h5可以用什么网站做做网站需要什么条件
  • 科技有限公司和商贸有限公司区别淄博seo网站推广
  • 微信小程序源码网站中文搜索引擎网站
  • 宁波网站制作公司费用价格济南网站自然优化
  • 做医院网站公司可以看任何网站的浏览器
  • 如何把自己做的网站seo的基本步骤是什么
  • 做现货黄金看什么网站免费推广引流平台推荐
  • 哪个网站做美食视频软件百度链接提交入口
  • 专门做cg视频网站大型seo公司
  • wordpress 空间需求php哪个版本网站排名优化公司哪家好
  • 模板速成网站搜索引擎优化实训