正题


题目大意

求一棵树上有多少条路径长度≤len\leq len≤len


解题思路

首先普通点分治。扫描的时候将每个点保存为一个二元组(dis,gra)(dis,gra)(dis,gra)分别表示离(分治到的)根的距离,属于根的那颗子树。

然后按照disdisdis排序,两个指针L,RL,RL,R用cnicn_icni​表示[L+1,R][L+1,R][L+1,R]这个区间内是iii这个子树的点的个数。

然后我们发现满足disL+disR≤lendis_L+dis_R\leq lendisL​+disR​≤len这个范围根据LLL的向前RRR是单调不升的然后两个指针维护一下每次统计一下答案R−L−cnLR-L-cn_LR−L−cnL​


codecodecode

#include<cstdio>
#include<set>
#include<algorithm>
using namespace std;
const int N=100100;
struct node{int to,w,next;
}a[N*3];
struct Num_node{int a,b;
}num[N];
int siz[N],ls[N],v[N],root,len,n,f[N],ans,tot,x,y,w,cnt,cn[N];
bool cmp(Num_node x,Num_node y)
{return x.a<y.a;}
void addl(int x,int y,int w)
{a[++tot].to=y;a[tot].w=w;a[tot].next=ls[x];ls[x]=tot;
}
void groot(int x,int fa)
{siz[x]=1;f[x]=0;for(int i=ls[x];i;i=a[i].next)if(a[i].to!=fa&&!v[a[i].to]){groot(a[i].to,x);siz[x]+=siz[a[i].to];f[x]=max(f[x],siz[a[i].to]);}f[x]=max(f[x],n-siz[x]);if (f[x]<f[root]) root=x;
}
void dfs(int x,int fa,int w,int grafa)
{num[++cnt].b=grafa;num[cnt].a=w;cn[grafa]++;for(int i=ls[x];i;i=a[i].next)if (!v[a[i].to]&&a[i].to!=fa)cn[a[i].to]=0,dfs(a[i].to,x,w+a[i].w,grafa);
}
void dp(int x)
{v[x]=1;cnt=0;for(int i=ls[x];i;i=a[i].next)if(!v[a[i].to])dfs(a[i].to,x,a[i].w,a[i].to);sort(num+1,num+1+cnt,cmp);for(int L=0,R=cnt;L<=R;L++,cn[num[L].b]--){while(num[L].a+num[R].a>len) cn[num[R].b]--,R--;if(L>=R) break;ans+=(R-L-cn[num[L].b]);}for(int i=ls[x];i;i=a[i].next)if(!v[a[i].to]){n=siz[a[i].to];root=0;groot(a[i].to,0);dp(root);}
}
int main()
{scanf("%d%d",&n,&len);for(int i=1;i<n;i++){scanf("%d%d%d",&x,&y,&w);addl(x,y,w);addl(y,x,w);}f[0]=2147483647;groot(1,0);dp(root);printf("%d",ans);
}

jzoj1166-树中点对距离【点分治】相关推荐

  1. 树中点对距离(点分治)

    题目 给出一棵带边权的树,问有多少对点的距离<=Len 分析 这是一道点分治的经典题目,可以给点分治的初学者练手. 点分治,顾名思义就是把每个点分开了处理答案. 假设,目前做到了以x为根的子树. ...

  2. 【BZOJ2152】聪聪可可,dfs+递推/点分治

    传送门 写在前面:╯﹏╰ 思路:刚开始char哥在做这个题,提供了不用点分治而是树上递推的做法,然后我就先调出来了-- 对树进行dfs,f[u][y]表示以x为根的子树中,与u距离为y的点(mod 3 ...

  3. bzoj 3730: 震波 动态点分治+树链剖分+线段树

    ##### 题目描述 : 在一片土地上有N个城市,通过N-1条无向边互相连接,形成一棵树的结构,相邻两个城市的距离为1,其中第i个城市的价值为value[i]. 不幸的是,这片土地常常发生地震,并且随 ...

  4. 【SPOJ2666】QTree4【链分治】

    传送门 题意:给一棵带边权的树,每个点开始时为白色,维护两种操作: 1.改变一个点的颜色(白变黑,黑变白) 2.询问最远的两个白点之间的距离 树分治国集论文 链分治的本质其实就是树链剖分.它们的区别是 ...

  5. 2019纪中暑假游记+总结

    Travels总篇\texttt{Travels总篇}Travels总篇 7/4\texttt{7/4}7/4 下午才去纪中,早上就一大早和同学出去玩,看了蜘蛛侠然后到3点多才出发. 因为走南沙大桥所 ...

  6. 【JZOJ 4639】Angel Beats!

    Description 天使立华奏攻入了死后世界战线(SSS)的地下工会Guild,这是万分危急的时候.仲村由理指挥工会成员有条不紊地进行撤退工作.工会成员在Guild最深层工厂安放炸药需要很长的准备 ...

  7. 为何BERT在 NLP 中的表现如此抢眼?

    https://www.toutiao.com/a6701812430017659396/ 2019-06-13 08:55:01 Transformer体系结构模型,特别是 BERT,已经被证明在许 ...

  8. JZOJ 5930. 【NOIP2018模拟10.26】山花

    Description 3.1 Background 春日的山中灌木茂盛,几乎长到了人的腰间,将山间都铺满了绿色.雨后的灌木之间还带着晨露,总会沾湿走过的行人的衣裳. 林中枝叶茂密,不过树木长的并不紧 ...

  9. Prim和Dijkstra算法的区别

    在图论中,Prim算法是计算最小生成树的算法,而Dijkstra算法是计算最短路径的算法.二者看起来比较类似,因为假设全部顶点的集合是V,已经被挑选出来的点的集合是U,那么二者都是从集合V-U中不断的 ...

  10. P3899-[湖南集训]谈笑风生【主席树】

    正题 题目链接:https://www.luogu.com.cn/problem/P3899 题目大意 给出nnn个点的一棵有根树,每次询问一个(p,k)(p,k)(p,k),求有多少个点对(b,c) ...

最新文章

  1. Linux中的echo简介(自我总结)(44)
  2. Apache Beam和BigQuery的错误处理(Java SDK)
  3. 有关缅甸语学习的一些网站
  4. mysql5.6源码编译_MySQL 5.6 源码编译安装
  5. java jni 数据类型_【Android JNI】Native层解析Java复杂数据类型HashMap
  6. Python学习笔记:常用内建模块2:collections
  7. 一次C端线上缓存问题的总结
  8. 精通Spring Boot—— 第二十一篇:Spring Social OAuth 登录简介
  9. 用汇编的眼光看C++(之判断流程)
  10. Linux+Nginx+Asp.net Core部署
  11. 数据-第9课-静态链表
  12. CentOS 7 配置 VNC 远程桌面连接
  13. 滑动拼图验证码的原理和破解方法~
  14. 码云gitee 部署公钥匙
  15. git报错 failed: The TLS connection was non-properly terminated
  16. egg.js入门教程视频文件(转载于cnode社区)
  17. WIN7 装2010 没反应,不要虚拟光驱,解压出来就可以安装了
  18. el 表达式 判断字符串是否相等
  19. 【eccv2016-论文笔记】《Seed, Expand and Constrain: ... Weakly-Supervised Image Segmentation》
  20. 微生物如何影响我们的生活

热门文章

  1. java类型转换造成的字节丢失,java 编码转换(已解决,转换字节丢失,无法实现)
  2. python while循环true_Python while循环,pause while not,true时继续?
  3. python如何封装成可调用的库_Python实现打包成库供别的模块调用
  4. c语言next的用法,C语言strchr使用之Next查找和截断想要的字符串
  5. [JavaWeb-Servlet]Servlet_执行原理
  6. [JavaWeb-HTML]HTML特殊字符表
  7. UVA - 725 Division-sprintf的妙用
  8. JAVA中小细节(易忽视和易错点)
  9. 使用pdf.js来预览pdf文件_适用于Dynamics365与PowerApps的注释预览组件
  10. 数据结构与算法-- 八皇后问题(多种实现方案)