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

题解:AT_mujin_pc_2017_d Oriented Tree

题意:给出一棵树,现在你可以将其定向,记 \(d(u,v)\) 为从 \(u\)\(v\) 需要逆多少条边才能走到。记 \(D\) 为所有的定向方式的 \(\max d(u,v)\),问有多少颗树 \(\max d(u,v)\) 等于 \(D\)\(n\le 1000\)

做法:

首先先考虑把 \(D\) 是多少直接弄出来,考虑直接取直径,假设长度为 \(l\),那么 \(D=\lfloor\frac{l+1}{2}\rfloor\)。并且容易构造,直接让奇数层往外,偶数层往里就可以练出来。

那么既然都这么取了,我们不妨也直接以直径中心为根去研究。首先有个很显然的 \(dp\)\(dp_{u,x,y}\) 代表子树中向下最大需要逆 \(x\) 条,向上最大逆 \(y\) 条的方案数,转移直接枚举两颗子树之间的限制就可以,但是这样复杂度太高了,大概是 \(O(n^4)\) 的。

发现其实我们转移的时候需要处理子树间的限制,这样太麻烦了,我们先转化一下,考虑更简单地表示 \(d(u,v)\)。记 \(h_u\) 代表 \(u\) 向根走的边数减去向下的边数的差,则 \(d(u,v)=\frac{|h_u-h_v|+\operatorname{dis}(u,v)}{2}\)。先不妨设直径长度为 \(2D\),则 \(|h_u-h_v|\le 2D-\operatorname{dis}(u,v)\)

然后我们考虑得极端一点,假设 \(u,v\) 出于根的不同的子树,那么会有 \(|h_u|\le D-dep_u\)。同时我们再考虑可以相同子树的 \(u,v\),会发现 \(|h_u-h_v|\le |h_u|+|h_v|\le 2D-dep_u-dep_v\le 2D - \operatorname{dis}(u,v)\),发现这样我们就可以完全不用管子树间的限制了!

此时因为一组合法的 \(h\) 即对应一颗树,所以我们只需要 dp 这个 \(h\) 数组就可以了,因为我们直接选取了直径中点为根,所以要求叶子节点的 \(h\) 全部相同。并且这个 \(h\) 数组限制相当少,只要满足 \(|h_u|\le D-dep_u,|h_u-h_v|=1\) 即可,直接记 \(dp_{u,i}\) 代表 \(h_u=i\) 的情况即可。

做到这里还有一个问题,前面也提到我们假设的直径长度为 \(2D\),但是也有可能直径中点落在边上,假设在 \((s, t)\) 上,那么就是有一侧的满足 \(|h_u|\le D-dep_u,\) 另一侧满足 \(|h_u|\le D+1-dep_u\),并不需要全部的叶子节点都相同。但是这里有个问题,注意到相邻两层间的 \(h_u\) 奇偶性不同,所以直接按这个 dp 可能会出现两侧叶子节点都是偶数这种情况,这种情况我们最后再容斥一下减掉就可以了。

代码:

#include <bits/stdc++.h>
using namespace std;
#define int long long
const int maxn = 1050, N = 505, mod = 1e9 + 7;
int n, a[maxn], b[maxn];
vector<int> e[maxn];
int dep[maxn], pth[maxn], tot, f[maxn];
void dfs1(int u, int fa) {dep[u] = dep[fa] + 1; f[u] = fa;for (int i = 0; i < e[u].size(); i++) {int v = e[u][i];if(v == fa)continue;dfs1(v, u);}
}
int dp[maxn][maxn];
void dfs2(int u, int fa, int d, int op) {for (int i = 0; i < e[u].size(); i++) {int v = e[u][i];if(v == fa)continue;dep[v] = dep[u] + 1;dfs2(v, u, d, op);}int l = dep[u] - d + N + op, r = d - dep[u] + N + op;for (int i = l; i <= r; i++) {dp[u][i] = 1;for (int j = 0; j < e[u].size(); j++) {int v = e[u][j];if(v == fa)continue;dp[u][i] = dp[u][i] * (dp[v][i - 1] + dp[v][i + 1]) % mod;} }
}
int cal(int s, int t, int d, int op) {memset(dp, 0, sizeof(dp));dep[s] = dep[t] = 0;if(!op)dfs2(s, t, d + 1, 0), dfs2(t, s, d, 0);elsedfs2(s, t, d, 0), dfs2(t, s, d, 1);int ans = 0;for (int i = 1; i <= 2 * N; i++)ans = (ans + dp[s][i] * (dp[t][i - 1] + dp[t][i + 1]) % mod) % mod;return ans;
}
signed main() {cin >> n;if(n == 2) {cout << 2 << endl;return 0;}for (int i = 1; i < n; i++) cin >> a[i] >> b[i], e[a[i]].push_back(b[i]),e[b[i]].push_back(a[i]);dfs1(1, 0);int nw = 0;for (int i = 1; i <= n; i++)if(dep[nw] < dep[i])nw = i;dfs1(nw, 0);int pos = 0;for (int i = 1; i <= n; i++)if(dep[pos] < dep[i])pos = i;while(pos)pth[++tot] = pos, pos = f[pos];if(tot % 2 == 1) {int pos = pth[tot / 2 + 1];dep[pos] = 0, dfs2(pos, 0, tot / 2, 0);int ans = 0;for (int i = 1; i <= 2 * N; i++)ans = (ans + dp[pos][i]) % mod;cout << ans << endl;}else {int s = pth[tot / 2], t = pth[tot / 2 + 1], d = tot / 2 - 1;cout << (cal(s, t, d, 0) + cal(t, s, d, 0) - cal(s, t, d, 1) - cal(t, s, d, 1) + 2 * mod) % mod << endl;}return 0;
}
http://www.hskmm.com/?act=detail&tid=27355

相关文章:

  • Redis缓存穿透优化
  • 元空间的两个重要参数
  • 工作电压2.4V-5.5V*低功耗单路触摸/单键触控感应芯片VKD233HR DFN6L
  • 2025.10.9——1橙
  • 抽象函数的定义域
  • GEO优化系统哪个最好?
  • 6G多站多智能超表面(RIS)
  • 缓冲区管理
  • Oracle故障处理:ASM手动修复磁盘头
  • 智慧考试微信小程序系统:一站式在线考试解决方案
  • 深入解析:【双光相机配准】可见光相机内参标定流程
  • oracle中引号的使用总结与报错信息
  • 2025 年电线电缆厂家最新推荐:实力厂家榜单重磅发布,涵盖多品类线缆及专业选择指南国标/朝阳/低压/阻燃/耐火/北京电线电缆厂家推荐
  • 5分钟,15分钟,差距大,做5分钟线要严格止损
  • 家政服务小程序系统:一站式家政服务解决方案
  • 营销农场小程序管理系统:营销吸粉与流量变现解决方案
  • 二部图,最大权/最小权完美匹配,费用流解法
  • OIFHA251009 比赛总结
  • 2025 滚珠丝杆厂家最新推荐榜单:精密 / 微型 / 重负载全品类适配,国产优质品牌选购指南不锈钢滚珠丝杆/大导程滚珠丝杆/研磨滚珠丝杆/高防尘滚珠丝杆厂家推荐
  • 2025智能电动伸缩门厂家推荐榜
  • 2025 滚珠丝杠厂家最新推荐榜:重负载 / 精密 / 研磨型产品优选清单及国产新锐品牌口碑解析
  • [Clickhouse] Clickhouse 客户端
  • 【实战】OpenCV 视频车辆统计
  • 2025 人力资源管理系统公司最新推荐榜单:AI 驱动下的全场景解决方案与品牌实力深度解析
  • P11988 [JOIST 2025] 宇宙怪盗 题解
  • 2025 年石墨烯厂家最新推荐榜单:氧化 / 羧基化 / 巯基化 / 羟基化 / 氨基化 / 氮掺杂石墨烯优质厂商全面解析与选购指南
  • 2025铝合金牺牲阳极厂家推荐榜:牺牲阳极阴极保护工业防腐技术
  • 2025 年压滤机厂家最新推荐排行榜:隔膜 / 污泥 / 真空 / 板框 / 带式压滤机厂家权威甄选指南板框/带式/污泥脱水/气化渣脱水专用/污泥专用脱水压滤机厂家推荐
  • 2025 年最新推荐!点胶机源头厂家权威排行榜:涵盖自动 / 果冻胶 / 无痕内衣 / 烫钻等多类型设备,助企业精准选品
  • 2025 年制袋机厂家推荐,广州速益科技提供多品类自动化设备与专业售后服务