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

怎么生成网站源代码北京网站建设公司报价

怎么生成网站源代码,北京网站建设公司报价,ui设计师作品集,pc 移动端网站建设引子 前置芝士:树、点双、呃,还有建图。 圆方树 A1:圆方树是什么? Q1:把一张图转换成一棵树,这棵树就叫圆方树,也叫虚树。 A2:我们为什么要把一张图转换成一棵树? Q2:因为树对于一般图来说有许多友好的性质…

引子

前置芝士:树、点双、呃,还有建图。

圆方树

A1:圆方树是什么?
Q1:把一张图转换成一棵,这棵树就叫圆方树,也叫虚树

A2:我们为什么要把一张图转换成一棵树?
Q2:因为树对于一般图来说有许多友好的性质。

A3:圆方树为什么叫圆方树?
Q3:因为圆方树是由一堆圆点方点组成的树,所以叫圆方树。

A4:圆方树能干什么?
Q4:把图上的问题转化成树上问题,可以使问题更加简洁明了。

A5:圆方树具体怎么实
Q5:哦,我们先来看个样例吧!

例子

这是张图
这是原图,首先声明一下,原图内的所有原点都为圆点。第一步,我们要找到所有的点双,这张图总共有5个点双;第二步,在每个点双里面设立一个方点,注意,这是虚构的点,然后,在新图里面将这个方点与这个点双里面的所有点连接起来,这样圆方树就建好了!
在这里插入图片描述
这就是圆方树,建树本身不难,会求点双就能用把圆方树建出来,难点在于如何恰当的赋权值使得在圆方树上能求解原问题。

例题,铁人两项

题面:上洛谷自己搜

算了,压缩一下题面:给定一张无向图,问有多少互不相同三元组<a, b, c>
使得存在一条从a到b经过c的简单路径。

在同一个点双中任意选取两点,它们之间的所有简单路径的并集恰好构成该点双。具体来说,两点间简单路径经过的顶点集合等于路径上各点双的并集。

将这一性质转化到圆方树上,可以表述为:两个圆点之间的路径覆盖的顶点集合包括路径上的所有圆点,以及这些圆点相邻的方点所对应的圆点。由于c不能等于a或b,最终答案就是这个集合的大小减去2。

具体统计方法如下:假设u到v的路径为u→s₁→c₁→s₂→v。路径上的点权之和为valu + vals₁ + valc₁ + vals₂ + valv。为了准确计算方点相邻圆点的数量,我们可以将方点的权值设为其相邻圆点的数量。但为了避免圆点被多个相邻方点重复计算,需要将圆点的权值设为-1。这样处理能有效解决两方点夹一圆点时的重复计数问题,同时首尾两点的贡献无需计入。

最终,圆方树上任意两圆点间的路径距离即为它们对答案的贡献值。问题因此转化为计算树上所有圆点对之间路径权值之和。通过树形DP统计每个顶点在路径中出现的次数与其权值的乘积,即可求得最终答案。

struct edge{//直接提交有惊喜哦int to,nxt;
}d[maxn];
vector<int> vec[maxn];
long long head[maxn*2],square[maxn],stac[maxn],low[maxn],dfn[maxn],siz[maxn],n,m,ans,cnt=1,id,top,nowsize,f;
void add(int u,int v){d[++cnt]=(edge){v,head[u]},head[u]=cnt;
}
void ins(int u,int v){vec[u].push_back(v);
}
void dfs(int u,int fa){siz[u]=u<=n?1:0;for(int i=0;i<vec[u].size();i++){int v=vec[u][i];if(v==fa)continue;dfs(v,u);ans+=siz[v]*siz[u]*square[u];siz[u]+=siz[v];}ans+=siz[u]*(nowsize-siz[u])*square[u];
}
void tarjan(int u){low[u]=dfn[u]=++id;stac[++top]=u;nowsize++;for(int i=head[u];i;i=d[i].nxt){int v=d[i].to;if(!dfn[v]){tarjan(v);low[u]=min(low[u],low[v]);if(low[v]>=dfn[u]){square[++f]=0;while(true){ins(f,stac[top]);ins(stac[top],f);square[f]++;if(stac[top--]==v)break;}ins(f,u);ins(u,f);square[f]++;}}else{low[u]=min(low[u],dfn[v]);}}
}
int main(){cin>>n>>m;f=n;for(int i=1;i<=n;i++){square[i]=-1;}for(int i=1;i<=m;i++){int l,r;cin>>l>>r;add(l,r);add(r,l);}for(int i=1;i<=n;i++){if(dfn[i])continue;nowsize=0;tarjan(i);top--;dfs(i,0);}cout<<ans*2;
}
http://www.dtcms.com/a/534765.html

相关文章:

  • 镇江企业网站排名优化企业网站建立流程
  • 中装建设网站域名有永久的吗
  • 南昌做网站建设哪家好wordpress 主题 英文版
  • 无锡企业建站模板汕头网站推广seo
  • 站长平台怎么添加网站苏州seo门户网
  • wordpress个人网站备案管理桌子seo关键词
  • 网站建设技术标准亚马逊产品开发流程8个步骤
  • 网站建网站建站莱州一中网站
  • wordpress 多站点 多域名jsp怎么做网站
  • 做网站的是些什么公司医疗行业网站策划
  • 厚街手机网站建设超市型网站开发
  • 花店网站设计wordpress超炫模板
  • 培训行业门户网站建设人网站建站
  • 自己做网站网页剧中cms建站程序哪个好
  • 中国月球空间站wordpress谷歌插件
  • 青岛网站设计机构江苏建站服务
  • 中山网站建设工作市场营销四大基本内容
  • 建设银行官网首页 网站能自己做照片书的有哪些网站
  • 网站底部模板源码洛可可设计公司估值
  • h5网站建设方案.doc湖南营销型网站建设价格
  • 大学国际化网站建设个人网站设计模板中文
  • 网站大全软件下载工程施工合同协议书范本
  • 什么样的网站开发比较吃香中国建筑集团有限公司官网测评网址
  • 广州网站开发定制需要多少钱永川网站设计
  • 微擎微网站开发网络科技公司网站源码
  • 谷歌网站站长指南网站设计的要求有哪些
  • 渭南网站制作学校播州区建设局网站
  • 如何与对方网站做相互链接做优化网站注意什么
  • 展示型网站建设流程网页怎么绑定wordpress
  • 辽宁住房建设部网站怎么让wordpress