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

CF161D Distance in Tree

CF161D Distance in Tree

LG传送门

长链剖分板子题。

长链剖分那么好写,跑得又快,为什么要写点分治呢?完了我现在看一道点分治题就想写长链剖分

如果还不会长链剖分请看我博客。

没什么好说的,时空复杂度\(O(n)\)直接洛谷rank1。

#include<cstdio>
#include<cctype>
#define R register
#define I inline
using namespace std;
const int S=50003,N=100003;
char buf[1000000],*p1,*p2;
I char gc(){return p1==p2&&(p2=(p1=buf)+fread(buf,1,S,stdin),p1==p2)?EOF:*p1++;}
I int rd(){
    R int f=0; R char c=gc();
    while(c<48||c>57) c=gc();
    while(c>47&&c<58) f=f*10+(c^48),c=gc();
    return f;
}
int h[S],s[N],g[N],p[S],q[S],d[S],t[S],*f[S],u[S],c,K,*e=u+1; long long o;
I int max(int x,int y){return x>y?x:y;}
I int min(int x,int y){return x<y?x:y;}
I void add(int x,int y){s[++c]=h[x],h[x]=c,g[c]=y;}
void dfs1(int x,int f){p[x]=f,d[x]=t[x]=d[f]+1;
    for(R int i=h[x],y;i;i=s[i])
        if((y=g[i])^f){dfs1(y,x);
            if(t[y]>t[x]) t[x]=t[y],q[x]=y;
        }
}
void dfs2(int x){f[x][0]=1;
    R int i,j,y,m,n=t[x]-d[x],k;
    if(q[x]) f[q[x]]=f[x]+1,dfs2(q[x]);
    for(i=h[x];i;i=s[i])
        if((y=g[i])^p[x]&&y^q[x]){f[y]=e,m=t[y]-d[y],e+=m+1,dfs2(y);
            for(j=max(K-n,0),k=min(m,K-1);j<=k;++j) o+=f[x][K-j]*f[y][j];
            for(j=0;j<=m;++j) f[x][j+1]+=f[y][j];
        }
    if(n>K) o+=f[x][K+1];
}
int main(){
    R int n=rd(),i,x,y;
    for(K=rd()-1,i=1;i<n;++i) x=rd(),y=rd(),add(x,y),add(y,x);
    dfs1(1,0),f[1]=e,e+=t[1],dfs2(1),printf("%lld",o);
    return 0;
}

转载于:https://www.cnblogs.com/cj-chd/p/10093515.html

相关文章:

  • python1210作业
  • 7 练习1 -作业讲解
  • 并发编程
  • Vscode的使用
  • VS2015调用Matlab2017a环境配置(转载)
  • 遍历器 for...of 循环
  • iOS开发实战之搜索控制器UISearchController使用
  • 饭卡
  • mysql索引原理与查询优化
  • protobuf中文教程(第一篇)
  • ASP.Net Core The type initializer for 'Gdip' threw an exception
  • js变量前的+是什么意思
  • ActiveMQ消息的消费原理
  • 下拉框搜索插件chosen
  • Vue -computed传参数
  • IE9 : DOM Exception: INVALID_CHARACTER_ERR (5)
  • 实现windows 窗体的自己画,网上摘抄的,学习了
  • ES6--对象的扩展
  • Linux Process Manage
  • Linux快速配置 VIM 实现语法高亮 补全 缩进等功能
  • nginx(二):进阶配置介绍--rewrite用法,压缩,https虚拟主机等
  • node-sass 安装卡在 node scripts/install.js 解决办法
  • vue从入门到进阶:计算属性computed与侦听器watch(三)
  • 从PHP迁移至Golang - 基础篇
  • 电商搜索引擎的架构设计和性能优化
  • 技术:超级实用的电脑小技巧
  • 项目实战-Api的解决方案
  • 小程序、APP Store 需要的 SSL 证书是个什么东西?
  • 以太坊客户端Geth命令参数详解
  • 译自由幺半群
  • 再谈express与koa的对比
  • No resource identifier found for attribute,RxJava之zip操作符
  • ​ ​Redis(五)主从复制:主从模式介绍、配置、拓扑(一主一从结构、一主多从结构、树形主从结构)、原理(复制过程、​​​​​​​数据同步psync)、总结
  • # 飞书APP集成平台-数字化落地
  • (2.2w字)前端单元测试之Jest详解篇
  • (ZT) 理解系统底层的概念是多么重要(by趋势科技邹飞)
  • (草履虫都可以看懂的)PyQt子窗口向主窗口传递参数,主窗口接收子窗口信号、参数。
  • (附源码)springboot家庭装修管理系统 毕业设计 613205
  • (免费领源码)python+django+mysql线上兼职平台系统83320-计算机毕业设计项目选题推荐
  • (算法二)滑动窗口
  • (五)c52学习之旅-静态数码管
  • (转)利用ant在Mac 下自动化打包签名Android程序
  • .NET Core 网络数据采集 -- 使用AngleSharp做html解析
  • .NET LINQ 通常分 Syntax Query 和Syntax Method
  • .net mvc部分视图
  • .net 重复调用webservice_Java RMI 远程调用详解,优劣势说明
  • .net 桌面开发 运行一阵子就自动关闭_聊城旋转门家用价格大约是多少,全自动旋转门,期待合作...
  • @transaction 提交事务_【读源码】剖析TCCTransaction事务提交实现细节
  • [ C++ ] STL---stack与queue
  • []使用 Tortoise SVN 创建 Externals 外部引用目录
  • [2669]2-2 Time类的定义
  • [acwing周赛复盘] 第 69 场周赛20220917
  • [Apio2012]dispatching 左偏树
  • [Ariticle] 厚黑之道 一 小狐狸听故事
  • [AX]AX2012 R2 出差申请和支出报告