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

误入网站退不了怎么做怎么做链接推广产品

误入网站退不了怎么做,怎么做链接推广产品,软件定制开发多少钱,企业注册名称查询D. Apple Tree Traversing 题目大意 有一个包含 n n n 个节点的苹果树,初始时每个节点上有一个苹果。你有一张纸,初始时纸上没有任何内容。 你需要通过以下操作遍历苹果树,直到所有苹果都被移除: • 选择一个苹果路径 ( u , v…

D. Apple Tree Traversing

题目大意

有一个包含 n n n 个节点的苹果树,初始时每个节点上有一个苹果。你有一张纸,初始时纸上没有任何内容。
你需要通过以下操作遍历苹果树,直到所有苹果都被移除:
• 选择一个苹果路径 ( u , v ) (u, v) (u,v)。当且仅当路径 ( u , v ) (u, v) (u,v) 上的每个节点都有苹果时,该路径才称为苹果路径。
• 设 d d d 为路径上的苹果数量,在纸上按顺序写下三个数字 ( d , u , v ) (d, u, v) (d,u,v)
• 然后移除路径 ( u , v ) (u, v) (u,v) 上的所有苹果。
这里的路径 ( u , v ) (u, v) (u,v) 指的是从 u u u v v v 的唯一最短路径上的所有节点序列。
设纸上的数字序列为 a a a。你的任务是找到字典序最大的可能序列 a a a

思路:

根据字典序的需求,要优先找最长的路径,然后路径的两个端点序号要最大。 那么可以通过两次dfs找直径的方式,找序号最大的最远点。每次找完一条直径就可以把树分成若干子树,继续在子树里找直径即可,最后把找到的直径排序输出。这是很容易想到的解法,时间复杂度是 O ( n n ) O(n\sqrt{n}) O(nn )的。
(证明过程其实很经典,因为每次移除的直径严格递减, k ⋅ ( k + 1 ) 2 ≤ n \dfrac{k \cdot (k + 1)}{2} \le n 2k(k+1)n,进而推得 k ≤ 2 ⋅ n k \le 2 \cdot \sqrt{n} k2n

具体实现见代码,dfs函数保存路径用pre前驱数组,避免用stl被卡常。

代码:

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define endl '\n'
#define int long long
#define pb push_back
#define pii pair<int, int>
#define FU(i, a, b) for (int i = (a); i <= (b); ++i)
#define FD(i, a, b) for (int i = (a); i >= (b); --i)
const int MOD = 1e9 + 7;
const int INF = 0x3f3f3f3f;
const int maxn = 2e5 + 5, MAXN = maxn;int n;
bool vis[maxn] = {};
vector<int> ed[maxn];struct way {int len, u, v;way(int a, int b, int c) : len(a), u(b), v(c) {};bool operator<(const way &o) const {if (len == o.len) {if (u == o.u)return v < o.v;return u < o.u;}return len < o.len;}
};
int p[maxn];
pair<int, int> dfs1(int u, int par) { // find farest maxpair<int, int> res = {1, u};p[u] = par;for (int v : ed[u]) {if (v != par && !vis[v]) {auto tmp = dfs1(v, u);tmp.first += 1;if (tmp.first > res.first ||(tmp.first == res.first && tmp.second > res.second))res = tmp;}}return res;
}void solve() {cin >> n;FU(i, 1, n) {ed[i].clear();vis[i] = 0;}FU(i, 1, n - 1) {int u, v;cin >> u >> v;ed[u].pb(v);ed[v].pb(u);}priority_queue<way> ans;for (int i = n; i >= 1; i--) {if (vis[i])continue;FU(j, 1, n) p[j] = -1;auto [d1, j] = dfs1(i, -1);auto [d2, k] = dfs1(j, -1);ans.push(way(d2, max(j, k), min(j, k)));while (k != -1) {vis[k] = true;k = p[k];}if (vis[i] == 0) i++; //如果当前点没有标记就重复遍历,不然会略掉i点}while (!ans.empty()) {auto e = ans.top();ans.pop();cout << e.len << " " << e.u << " " << e.v << " ";}cout << endl;
}signed main() {
#ifdef ONLINE_JUDGE
#elsefreopen("../in.txt", "r", stdin);
#endifcin.tie(0)->ios::sync_with_stdio(0);int T = 1;cin >> T;while (T--) {solve();}return 0;
}
http://www.dtcms.com/wzjs/187407.html

相关文章:

  • wordpress 文档导入seo刷关键词排名软件
  • 做网站接广告赚钱么怎么推广一个app
  • 销售平台网站建设方案模板情感营销经典案例
  • 厦门网站建设公司推荐做电商一个月能挣多少钱
  • 深圳外贸建站网络推广价格购买友情链接
  • 九冶建设有限公司官方网站嘉兴seo优化
  • 量力商务大厦网站建设傻瓜式自助建站系统
  • 煎蛋网站用什么做的搜索引擎优化是什么工作
  • ktv支付订房网站模板域名大全免费网站
  • 如何在外管局网站做延期百度百家自媒体平台注册
  • 自己做小程序开个社区团购常用的关键词优化策略有哪些
  • 用html做企业门户网站关键字c语言
  • 云南世博建设监理有限责任公司网站发帖秒收录的网站
  • 网站建设2种账号体系免费发帖推广平台有哪些
  • 贸易公司如何做英文网站电商平台营销策划方案
  • 手机购物网站制作百度手机软件应用中心
  • 普陀专业做网站武汉seo排名优化
  • 网上怎么推销自己的产品seo怎么收费的
  • 解放军工程建设协会网站搜索引擎营销的特征
  • 北京SEO网站优化公司目前推广平台都有哪些
  • 网站响应速度优化seo网站推广软件
  • 家居装修公司排名seo免费诊断联系方式
  • 域名需要跟网站名称一致么北京百度总部
  • 梅州网站制作青岛谷歌seo
  • 算命先生的网站怎么做适合口碑营销的产品
  • 阳信做网站石家庄热搜
  • 网站开发与设计多少钱一个网站站长平台网站
  • 浙江网站优化公司怎么自己弄一个平台
  • 在线购物商城网站百度推广代理商查询
  • 如何保存自己做的网站手机免费发布信息平台