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

论坛网站搭建免费网站收录网站推广

论坛网站搭建,免费网站收录网站推广,创意江苏网站建设,凡科做网站友情链接怎么做题目 P1 边双缩点 观察样例二,可以发现边双内的边可选可不选。由此考虑边双缩点,Tarjan 找桥即可,缩点后变成一棵树。 P2 设计状态 用最终合法答案形态截这颗树,设计 f u f_u fu​ 表示 u u u 子树内非空,且子树…

题目

P1 边双缩点

观察样例二,可以发现边双内的边可选可不选。由此考虑边双缩点,Tarjan 找桥即可,缩点后变成一棵树。

P2 设计状态

用最终合法答案形态截这颗树,设计 f u f_u fu 表示 u u u 子树内非空,且子树内军营到 u u u 的边均被保护的方案数。

P3 转移

为方便转移,记 g u g_u gu 表示 u u u 子树空的方案数,遍历 u u u 的儿子 v v v

  • v v v 不选,则 v v v 之前非空, f u × 2 × g v f_u \times 2\times g_v fu×2×gv
  • v v v 选, ( f u + g u ) × f v (f_u+g_u) \times f_v (fu+gu)×fv

g u = ∏ ( 2 × g v ) g_u = \prod(2 \times g_v) gu=(2×gv)

u u u 所在边双点数为 V u V_u Vu,边数为 E u E_u Eu。初值: f u = 2 V u + E u − 2 E u , g u = 2 E u f_u=2^{V_u+E_u}-2^{E_u},g_u=2^{E_u} fu=2Vu+Eu2Eu,gu=2Eu

P4 统计答案

假定只选 i i i 子树内的点,此时子树外的边均可选可不选。然而这样在 i i i 祖先处统计会重复计算 i i i 的贡献,强制不选 i → f a i i \to fa_i ifai 这条边即可,其余子树外的边任意。

P5

#include <iostream>
#include <vector>
#define int long longusing namespace std;const int N = 5e5 + 5;
const int M = 1e6 + 5;
const int mod = 1e9 + 7;int n, m, pw[N + M];struct Edge{int to, nxt;
}e1[M << 1], e2[M << 1];int tot1 = 1, head1[N];
void add1(int u, int v)
{e1[++tot1] = {v, head1[u]}; head1[u] = tot1;
}int tot2 = 1, head2[N];
void add2(int u, int v)
{e2[++tot2] = {v, head2[u]}; head2[u] = tot2;
}int low[N], dfn[N], idx;
bool bridge[M << 1];
void Tarjan(int u, int from)
{low[u] = dfn[u] = ++idx;for(int i=head1[u]; i; i=e1[i].nxt){if((i ^ 1) == from) continue;int v = e1[i].to;if(!dfn[v]) // tree edge{Tarjan(v, i);low[u] = min(low[u], low[v]);if(low[v] >= dfn[v])bridge[i] = bridge[i ^ 1] = 1;}else low[u] = min(low[u], dfn[v]); // back edge}
}int cnt, belong[N], V[N], E[N];
void dfs0(int u)
{belong[u] = cnt, V[cnt] ++ ;for(int i = head1[u]; i; i = e1[i].nxt){int v = e1[i].to;if(belong[v] or bridge[i]) continue;dfs0(v);}
}int ans, siz[N], f[N], g[N];
void dfs(int u, int from)
{f[u] = pw[E[u]] * (pw[V[u]] - 1) % mod,g[u] = pw[E[u]], siz[u] = E[u];for(int i = head2[u]; i; i=e2[i].nxt){if((i ^ 1) == from) continue;int v = e2[i].to;dfs(v, i);siz[u] += siz[v] + 1;f[u] = f[u] * 2 * g[v] % mod + (f[u] + g[u]) * f[v] % mod;			f[u] %= mod;g[u] *= 2 * g[v];					 								g[u] %= mod;}if(u == 1) ans += f[u], 												ans %= mod;else ans += f[u] * pw[m - siz[u] - 1] % mod,							ans %= mod;
}signed main()
{cin >> n >> m;pw[0] = 1; for(int i=1; i<=m; i++) pw[i] = (pw[i-1] << 1) % mod;for(int i=1; i<=m; i++){int u, v;cin >> u >> v;add1(u, v); add1(v, u);}Tarjan(1, 0);for(int i=1; i<=n; i++){if(!belong[i]) ++ cnt, dfs0(i);}for(int i=2; i<=tot1; i++){int u = e1[i].to, v = e1[i ^ 1].to;if(belong[u] == belong[v]) E[belong[u]] ++ ;else add2(belong[u], belong[v]);}for(int i=1; i<=cnt; i++) E[i] >>= 1;dfs(1, 0);cout << ans;
}
http://www.ds6.com.cn/news/108993.html

相关文章:

  • 虎门网站建设费用搜索引擎分析论文
  • 360 网站优化广州百度关键词排名
  • 做网站推广需要具备哪些条件百度代做seo排名
  • 上海市建设安全协会 - 网站首页最新提升关键词排名软件
  • asp.net的网站开发创建自己的网站
  • 网站迁移建设方案深圳网络推广平台
  • 做任务的网站源码推广哪个app最挣钱
  • 做网站显示上次登录时间代码今日新闻头条新闻最新
  • 做网站备案的公司2023b站免费推广入口游戏
  • 南宁做企业网站腾讯广告投放平台
  • 网站销售方案搜索引擎优化论文3000字
  • 创建网站需要注意的问题seo网站推广优化就找微源优化
  • 嘉兴高端网站建设提升网页优化排名
  • 苏州企业网站建设网络服务关键词规划师工具
  • 不记得域名管理网站搜索引擎地址
  • 深圳免费做网站交换链接的例子
  • 广州市公司网站建设新东方在线koolearn
  • 迪哥哪个网站上做游戏直播百度上海分公司
  • 自己设计网页的网址站长工具seo综合查询
  • 丽水专业网站制作公司百度点击工具
  • 做项目搭建网站 构建数据库企业类网站有哪些例子
  • html5网站制作关键字挖掘机爱站网
  • 火是用什么做的视频网站cnzz
  • 著名的电子商务网站广告联盟
  • 网站建设个人网上银行网络推广外包搜索手机蛙软件
  • 青岛有哪些做网站的公司潍坊网站排名提升
  • 去掉自豪的wordpressseo诊断工具有哪些
  • 大学生一个人做网站宁波seo公司推荐
  • 怎样做模具钢网站企业推广的网站
  • 淄博做网站站长分析工具