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

企业建设网站的步骤是什么?百度人工客服24小时

企业建设网站的步骤是什么?,百度人工客服24小时,wordpress 上传 主题,长沙制作公园仿竹围栏报价目录 题目算法标签: d f s dfs dfs, 树上差分思路 d f s dfs dfs代码树上差分代码 题目 CF29D Ant on the Tree 算法标签: d f s dfs dfs, 树上差分 思路 由于点的数量很少 300 300 300, 因此时间复杂度在 O ( n 3 ) O(n ^ 3) O(n3)之内都可以通过, 考虑 d f s dfs dfs,…

题目

CF29D Ant on the Tree
在这里插入图片描述

算法标签: d f s dfs dfs, 树上差分

思路

由于点的数量很少 300 300 300, 因此时间复杂度在 O ( n 3 ) O(n ^ 3) O(n3)之内都可以通过, 考虑 d f s dfs dfs, 从叶子结点开始搜, 因为 d f s dfs dfs记录顺序是逆序, 因此倒着搜就是正序, 时间复杂度 O ( n 2 ) O(n ^ 2) O(n2)

d f s dfs dfs代码

#include <iostream>
#include <algorithm>
#include <cstring>
#include <vector>using namespace std;const int N = 310;vector<int> head[N], ans;void add(int u, int v) {head[u].push_back(v);
}bool dfs(int u, int fa, int t) {if (u == t) return true;for (int v : head[u]) {if (v != fa && dfs(v, u, t)) {ans.push_back(v);return true;}}return false;
}int main() {ios::sync_with_stdio(false);cin.tie(0), cout.tie(0);int n;cin >> n;for (int i = 0; i < n - 1; ++i) {int u, v;cin >> u >> v;add(u, v), add(v, u);}int t = 1, s;while (cin >> s) dfs(s, 0, t), t = s;dfs(1, 0, t);ans.push_back(1);if (ans.size() != 2 * n - 1) {cout << -1 << "\n";return 0;}for (int x : ans) cout << x << " ";cout << "\n";return 0;
}

树上差分代码

在差分过程中, 计算每个节点应该经过的次数, 然后在统计的时候就能计算出每个节点应该被经过多少次, 从而判断是否是合法的

#include <iostream>
#include <algorithm>
#include <cstring>
#include <vector>using namespace std;const int N = 310, M = 10;int n;
int fa[N][M], depth[N];
int diff[N], order[N], cnt;
vector<int> head[N];void add(int u, int v) {head[u].push_back(v);
}void dfs(int u, int pre, int dep) {fa[u][0] = pre, depth[u] = dep;int is_leaf = 1;for (int v : head[u]) {if (v == pre) continue;dfs(v, u, dep + 1);is_leaf = 0;}cnt += is_leaf;
}int lca(int u, int v) {if (depth[u] < depth[v]) swap(u, v);for (int i = M - 1; i >= 0; --i) {if (depth[fa[u][i]] >= depth[v]) u = fa[u][i];}if (u == v) return u;for (int i = M - 1; i >= 0; --i) {if (fa[u][i] != fa[v][i]) {u = fa[u][i];v = fa[v][i];}}return fa[u][0];
}void check(int u, int pre) {for (int v : head[u]) {if (v == pre) continue;check(v, u);diff[u] += diff[v];}if (u > 1 && diff[u] != 2) {cout << -1 << "\n";exit(0);}
}void move(int u, int v) {int rev = 0;if (depth[u] < depth[v]) {swap(u, v);rev = 1;}vector<int> ans;while (u != v) {ans.push_back(rev ? u : fa[u][0]);u = fa[u][0];}if (rev) reverse(ans.begin(), ans.end());for (int u : ans) cout << u << " ";
}int main() {ios::sync_with_stdio(false);cin.tie(0), cout.tie(0);cin >> n;for (int i = 0; i < n - 1; ++i) {int u, v;cin >> u >> v;add(u, v), add(v, u);}dfs(1, 0, 1);// 处理倍增数组for (int i = 1; i < M; ++i) {for (int u = 1; u <= n; ++u) {fa[u][i] = fa[fa[u][i - 1]][i - 1];}}// 起点终点都是1order[0] = order[cnt + 1] = 1;// 处理差分数组for (int i = 1; i <= cnt; ++i) {if (i <= cnt) cin >> order[i], diff[order[i]] += 2;int p = lca(order[i - 1], order[i]);diff[p] -= 2;}check(1, 0);cout << "1 ";for (int i = 1; i <= cnt + 1; ++i) {int p = lca(order[i - 1], order[i]);move(order[i - 1], p);move(p, order[i]);}cout << "\n";return 0;
}
http://www.dtcms.com/wzjs/341922.html

相关文章:

  • 电商代运营公司排行榜化工seo顾问
  • 四川网站制作百度网站的域名地址
  • 网站防红怎么做的电子商务网站建设规划方案
  • 公司做网站需要什么条件怎么在百度做网站推广
  • 电话用网站做综合布线最好的搜索引擎
  • 合肥公司网站设计企业推广网站有哪些
  • 旅游网站建设规划书模块划分媒体代发网站
  • 正邦的网站建设百度知道官网登录入口
  • 中国网站推广黄页名录seo报名在线咨询
  • e通网网站建设网络营销百度百科
  • 温州手机网站制作联系电话小程序制作一个需要多少钱
  • 网站建议方案关键词检索怎么弄
  • 宿迁哪里做网站网络做推广公司
  • 建设局哪个网站查证新开网店自己如何推广
  • 徐州网站开发怎样简述网络营销的含义
  • 云服务器放网站快么最新推广方法
  • 腾讯快速建站平台信息流广告的特点
  • 做特产的网站的分析万物识别扫一扫
  • 网站整体架构中国培训网官网
  • 用html网站登录界面怎么做google图片搜索引擎入口
  • 2013 中国网站建设市场 pdf高端企业建站公司
  • 乡村规划建设网站南昌seo报价
  • 个人网站的类型百度站长工具怎么用
  • wordpress主题next推荐app优化网站
  • 蒙古文网站建设汇报材料广州网站优化页面
  • seo优秀网站分析营销策划公司名称
  • 58加盟创业网seo就业前景如何
  • 网站建设报价单及项目收费明细表推广引流话术
  • 网站制作在哪找网站关键词优化排名软件系统
  • 山东青岛网站建设公司哪家专业免费培训课程