P4281 [AHOI2008] 紧急集合 / 聚会

2024-08-25 18:36

本文主要是介绍P4281 [AHOI2008] 紧急集合 / 聚会,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

[AHOI2008] 紧急集合 / 聚会 - 洛谷

树上三个点的路径上找一个点,聚集到一起,经过的边权值和最小

看样例以为是到比较3个点就可以了

写完发现询问2错误了

画图思考

看起来2是最完美的,不会走重复的路线

也可以知道2是3,6的lca,就想把每个lca都做一遍

O(1) dis(x,y)=dep[x]+dep[y]-2*dep[lca(x,y)

ans=dep[x]+dep[y]+dep[z]-2(dep[lca(x,y)]+dep[lca(x,z)+dep[lca(y,z)])

然后能a,就是很复杂的式子

后面发现3个点lca最多就2个

可以化简式子

p=lca(x,y)

ans=dep[x]+dep[y]+dep[z]-dep[p]-2*dep[lca(p,z)]

但是都是要枚举3个lca

于是思考如果存在2个lca是一样的就不应该在那边聚集,如果在那边聚集就会有至少2个人要走重复的路

因此如果有2个lca一样就选不一样的,3个一样就lca(x,y,z)

ans=dep[x]+dep[y]+dep[z]-dep[p]-2*dep[lca(x,y,z)]\

// Problem: P4281 [AHOI2008] 紧急集合 / 聚会
// Contest: Luogu
// URL: https://www.luogu.com.cn/problem/P4281
// Memory Limit: 125 MB
// Time Limit: 1000 ms
// 
// Powered by CP Editor (https://cpeditor.org)#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
const int N=5e5+9;
int a[N];
int n,m;
//树剖
//1.转成线性部分
vector<int> e[N];
void add(int u,int v){e[u].push_back(v);e[v].push_back(u);
}
int fa[N],dep[N],sz[N],wc[N],dis[N];
void dfs1(int u,int f){//fa dep sz wcfa[u]=f;sz[u]=1;dep[u]=dep[f]+1;for(auto & i : e[u]){if(i==f){dis[u]=1;//边权给儿子}if(i!=f){dfs1(i,u);sz[u]+=sz[i];if(sz[i]>sz[wc[u]]){wc[u]=i;}}}
}
int dfn[N],rdfn[N],top[N],vistime;
void dfs2(int u,int Top){//dfn rdfn topdfn[u]=++vistime;a[vistime]=dis[u];//top[u]=Top;if(wc[u]){dfs2(wc[u],Top);for(auto & i : e[u]){if(i!=wc[u] && i!=fa[u]){dfs2(i,i);}}}
}
int lca(int u,int v){while(top[u]!=top[v]){if(dep[top[u]]<dep[top[v]]){swap(u,v);}u=fa[top[u]];}return dep[u]>dep[v]?v:u;
}
int main(){ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);cin>>n>>m;for(int i=1;i<=n-1;i++){int a,b;cin>>a>>b;add(a,b);}dfs1(1,0);dfs2(1,1);// t.build(1,1,n);for(int i=1;i<=m;i++){int x,y,z;cin>>x>>y>>z;int p1=lca(x,y),p2=lca(x,z),p3=lca(y,z);int p=0;int P=lca(p1,p2);if(p1==p2){p=p3;// cout<<p3<<" "<<(dep[x]+dep[y]+dep[z]-dep[p3]-2*dep[lca(p3,p1)])<<'\n';// continue;}if(p2==p3){p=p1;// cout<<p1<<" "<<(dep[x]+dep[y]+dep[z]-dep[p1]-2*dep[lca(p3,p1)])<<'\n';// continue;}if(p1==p3){p=p2;// cout<<p2<<" "<<(dep[x]+dep[y]+dep[z]-dep[p2]-2*dep[lca(p2,p1)])<<'\n';}//dis(x,y)=dep[x]+dep[y]-2*dep[lca(x,y)]cout<<p<<" "<<(dep[x]+dep[y]+dep[z]-dep[p]-2*dep[P])<<'\n';}return 0;
}

这篇关于P4281 [AHOI2008] 紧急集合 / 聚会的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1106337

相关文章

Base x DAOBase: Base生态聚会新加坡站,共筑链上未来

备受期待的 Base 社区聚会将于新加坡 Token2049 期间盛大举行,这为 Base 的支持者和生态建设者们提供了一个绝佳的相聚机会。本次活动由 Base、 DAOBase以及其他合作方共同支持。Base 是全球知名交易所 Coinbase 研发的以太坊 Layer2 扩容方案,致力于为用户提供更开放、更便捷、更安全且费用更低的交易环境。自推出以来,Base 的总锁仓量(TVL)已接近60亿

BZOJ 1787 [Ahoi2008]Meet紧急集合 题解与分析

[Ahoi2008]Meet 紧急集合 Time Limit: 20 Sec   Memory Limit: 162 MB Description Input Output Sample Input 6 4 1 2 2 3 2 4 4 5 5 6 4 5 6 6 3 1 2 4 4 6 6 6 Sa

图灵五周年生日聚会圆满成功,多家媒体对此进行报道

“图灵五年 抓牢IT引进版” ,http://sinaurl.cn/qZ0yh 。《出版商务周报》 对图灵五周年生日聚会进行了报道,同时对图灵总经理武卫东进行了访问。 新浪读书 为图灵5周年生日会进行了报道:http://book.sina.com.cn/news/c/2010-07-08/1641270536.shtml 新华书目报 为图灵5周年生日会进行了报道:

超越梦想,追求卓越——图灵五周年生日聚会圆满成功

北京图灵文化发展有限公司 5 周年生日会于 7 月 3 日 在 SOHO 尚都的微薄之盐酒吧举行。来自公司版权合作伙伴、新闻媒体、作译者的数十位嘉宾到场庆 贺。人民邮电出版社的领导也出席并讲话。会上回顾了图灵公司 5 年来的发展历程,公司员工演出了各种文艺节目。   图灵公司自 2005 年成立以来,一直致力于翻译引进国外优秀的计算机图书, 5 年来累计出版图书逾 530 多种,累计销售码

习题 8-13 外星人聚会(Meeting with Aliens, UVa10570)

原题链接:https://vjudge.net/problem/UVA-10570 分类:枚举法 备注:剪枝 O(n^3)也能过,数据比较水,不过加个数组可以优化到O(n^2) #include<bits/stdc++.h>using namespace std;const int maxn=505;int a[maxn],pos[maxn],b1[maxn],b2[maxn],n;i

简单好用的K歌麦克风,聚会娱乐好伙伴

大家平时K歌的时候,一般都会去专业的场所,这两年因为特殊原因,大家在家的时候比较长,所以通常只能对着手机K歌,上个月我发现电视、电脑上也有很多K歌APP,配上一支好用的麦克风,在家也能获得非常好的K歌体验。 这几天我就尝试了一款纯麦U7PRO麦克风,这是款专门针对小米电视做了优化的K歌麦克风,在小米、红米的电视上使用有属性加成,一般用在其他电视或者电脑上也没有问题,而且纯麦U7PRO一套是两

《程序员》算法擂台之骑士聚会问题(c语言版) 一

#include  < stdio.h > #include  < stdlib.h > #include < time.h > struct  point {      int  x;      int  y;      int *  CastStep; }; point *  GetCanGo(point, int ); void  Walk(point, int ); int

工作室深圳区成员聚会

上周在深圳科技园与自动化测试工作室的几个核心成员聚会,从技术聊到人生,从生活聊到工作,从公司聊到事业。。。     文青山果然是个才子,样子长得文质彬彬的,说话也很斯文      金玉辉打算将他这几年研发的自动化测试工具开源出来,期待!      贾江兵要去成都发展,我也很看好成都的软件测试发展,支持!     后来易德财讲完课和张志会也一起过来吃晚饭,那个面

北师大历史系65级同学聚会宁夏【之三】——在宁夏沙坡头、金沙岛聚会

李建宇  李建宇    杨家兴  惠晓秋、樊淑爱、庞心田、边聪民  樊淑爱、边聪民、惠晓秋  樊淑爱、边聪民、惠晓秋    沙坡头  沙坡头  王庆云、郑文范  王庆云、郑文范  王庆云、郑文范、边聪民  王庆云、郑文范、边聪民  杨森翔、王庆云  杨森翔、王庆云在沙坡头  边聪民、惠晓秋在沙坡头              樊淑爱、季文

小i机器人,MSNNEXT,MSNSHELL的周末聚会【帮帮俱乐部】

jarhoo是一个很棒的根据类名找jar包的地方,  。 在写程序的时候,我反正是经常遇到某一个类声明不知道是哪一个jar包的,比如某一个开源包报告了 java.lang.NoClassDefFoundError: javax/servlet/http/HttpSessionListener 错误,搞得满世界找。 有了jarhoo好点,它声称“Searches for jar files or