博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HNOI2014 世界树
阅读量:6403 次
发布时间:2019-06-23

本文共 1752 字,大约阅读时间需要 5 分钟。

Description

 

Input

Output

 

Sample Input

10 2 1 3 2 4 3 5 4 6 1 7 3 8 3 9 4 10 1 5 2 6 1 5 2 7 3 6 9 1 8 4 8 7 10 3 5 2 9 3 5 8

Sample Output

1 9 3 1 4 1 1 10 1 1 3 5 4 1 3 1 1
 

Data Constraint

 

Hint

 
我们每次询问的关键点个数是有限的,实树上很多节点的情况实际是一样的,我们可以直接一起处理。
那么我们要构建一个叫虚树的东西。只把和这几个点有关系的点建入树中,没有在虚树中的点直接用size统计答案即可
虚树中要放入关键点以及dfs序相序关键点的lca。构建虚树的方法:用单调栈维护树的最右链,每加入一个点,把之前非父亲的点弹出,然后和父亲连边即可
 
然后我们在虚树上跑最短路,找出离每个点最近的点,
接着对于虚树的每一条边,
1.如果两端点的最近点相同,那么这条边上的最近点均相同,直接计入答案即可
2.不同,则在边上找一个分界点,然后用1的情况处理即可
 
#include
#include
#include
#include
#include
#include
using namespace std;struct dd{ int dis,x; bool operator < (dd a) const { return dis>a.dis; } dd(int a=0,int b=0){ dis=a; x=b; }};priority_queue
H;int num[300011],a[300011],ys[300011],stk[300011],ans[300011];int t,T,tc,ts,tot,tt,top,n,m,i,j,x,z,root;int dfn[300011],next[600011],y[600011],g[300011],dep[300011];int G[300011],Next[600011],Y[600011],len[600011];int fa[300011][19],d[300011],near[300011],rank[300011],size[300011];bool vis[300011];bool cmp(int a,int b){ return dfn[a]
=0;i--)if(fa[x][i]!=fa[z][i]){ x=fa[x][i]; z=fa[z][i]; } return fa[x][0];}void Buildtree(){ int i; sort(num+1,num+1+t,cmp); T=t; for(i=1;i
=dfn[stk[top]]&&dfn[a[i]]
0){ fj=ef(x,z,1,dep[x]-dep[z]-1); ans[rank[near[x]]]+=size[fj]-size[x]; ans[rank[near[z]]]+=size[nk]-size[fj]; } }}void find(int x,int faf){ int ad,j,k,nk; if(x==root)ans[rank[near[x]]]+=n-size[x]; j=G[x]; ad=size[x]; while(j!=0){ k=Y[j]; if(k!=faf){ nk=jump(k,dep[k]-dep[x]-1); Tfind(k,x); find(k,x); ad-=size[nk]; } j=Next[j]; } ans[rank[near[x]]]+=ad;}int main(){ scanf("%d",&n); for(i=1;i

 

转载于:https://www.cnblogs.com/applejxt/p/4451648.html

你可能感兴趣的文章
《CATIA V5 从入门到精通(第二版)》——2.6 通用的工具(Tools)
查看>>
《vSphere性能设计:性能密集场景下CPU、内存、存储及网络的最佳设计实践》一1.5.1 虚拟机可扩展性...
查看>>
《实施Cisco统一通信管理器(CIPT1)》一2.1 本章主题
查看>>
《电子基础与维修工具核心教程》——导读
查看>>
《微信公众平台开发:从零基础到ThinkPHP5高性能框架实践》——第2章 本地开发环境搭建及程序开发基础 2.1 本地开发环境的搭建...
查看>>
互联网人出游必备清单
查看>>
Golang环境搭建
查看>>
《程序员的呐喊》一一1.5 作者手记:神秘机器的笔记
查看>>
《AutoCAD 2013中文版从入门到精通》——1.3 配置绘图系统
查看>>
《深入理解ElasticSearch》——2.8 ElasticSearch切面机制中的过滤器与作用域
查看>>
Mozilla 开源 web 虚拟现实框架 A-Frame
查看>>
Libreboot 申请重新加入 GNU
查看>>
《伟大的计算原理》一总结
查看>>
开源笔记本 Novena 将支持宽频软件无线电
查看>>
程序员怎样才能找到一个靠谱的创业公司
查看>>
《实施Cisco统一通信VoIP和QoS(CVOICE)学习指南(第4版)》一第1章 介绍语音网关...
查看>>
ZFS On Linux 现状,是否足够稳定了?
查看>>
《OpenCV图像处理》——2.5 算术运算
查看>>
《嵌入式 Linux C 语言应用程序设计(修订版)》——导读
查看>>
YurunHttp V1.3.3 发布,支持 composer
查看>>