首页 > 其他分享 >树链剖分 学习笔记

树链剖分 学习笔记

时间:2024-05-14 12:08:11浏览次数:21  
标签:main ch 剖分 int 笔记 son 树链


树链剖分 学习笔记

时更。

还没开始学,放个板子先。

板子
#include<bits/stdc++.h>
#define fo(x,y,z) for(int (x)=(y);(x)<=(z);(x)++)
#define fu(x,y,z) for(int (x)=(y);(x)>=(z);(x)--)
typedef long long ll;
inline int qr()
{
	char ch=getchar();int x=0,f=1;
	for(;ch<'0'||ch>'9';ch=getchar())if(ch=='-')f=-1;
	for(;ch>='0'&&ch<='9';ch=getchar())x=(x<<3)+(x<<1)+(ch^48);
	return x*f;
}
#define qr qr()
using namespace std;
const int Ratio=0;
const int N=500005;
const int maxi=INT_MAX;
int n,m,tot,cnt;
int hh[N],to[N],ne[N];
int dep[N],fa[N],siz[N],son[N];
int id[N],top[N];
// int w[N],wt[N];
namespace Wisadel
{
	void Wadd(int u,int v/*,int ww*/)
    {
        to[++cnt]=v;
        // w[cnt]=ww;
        ne[cnt]=hh[u];
        hh[u]=cnt;
    }
    void Wdfs1(int u,int f,int deep)
    {
        dep[u]=deep,fa[u]=f,siz[u]=1;
        int maxson=-1;
        for(int i=hh[u];i!=-1;i=ne[N])
        {
            int v=to[i];
            if(v==f)
                continue;
            Wdfs1(v,u,deep+1);
            siz[u]+=siz[v];
            if(siz[v]>maxson)
                son[u]=v,maxson=siz[v];
        }
    }
    void Wdfs2(int u,int topf)
    {
        id[u]=++tot,top[u]=topf;
        // wt[tot]=w[u];
        if(!son[u])
            return;
        Wdfs2(son[u],topf);
        for(int i=hh[u];i!=-1;i=ne[i])
        {
            int v=to[i];
            if(v==fa[u]||v==son[u])
                continue;
            Wdfs2(v,v);
        }
    }
    short main()
	{
		memset(hh,-1,sizeof hh);
		return Ratio;
	}
}
int main(){return Wisadel::main();}

标签:main,ch,剖分,int,笔记,son,树链
From: https://www.cnblogs.com/Ratio-Yinyue1007/p/18191046

相关文章

  • redis学习笔记3: redis常用命令
    redis学习笔记3:redis常用命令在此处输入redis命令字符串操作命令setkeyvalue设置指定key的值(类似于put)getkey获取指定key的值setexkeysecondsvalue设置带有过期时间的keysetnxkey......
  • redis学习笔记4: 在Java中操作Redis
    redis学习笔记4:在Java中操作RedisRedis的Java客户端Jedis[命令和原生Redis基本相同]Lettuce[性能高效]SpringDateRedis[可以在Spring项目中使用,简化操作]SpringDateRedis使用方式导入maven坐标<!--https://mvnrepository.com/artifact/org.springfra......
  • 软件评测师笔记08--测试用例设计
    决策表(判定表)测试用例设计步骤1、依据软件规格说明:确定规则个数2、列出所有的条件项和动作桩3、输入条件项4、输入动作项,制定初始判定表5、合并相似规则   场景法设计测试用例步骤1、根据规格说明,描述出程序的基本流及各项备选流2、根据基本流和备选流确定场景3、......
  • 【SpringCloud】黑马学习笔记-Nacos
    #1.Nacos安装(黑马教程安装材料)##1.1Windows安装开发阶段采用单机安装即可。###1.1.1下载安装包在Nacos的GitHub页面,提供有下载链接,可以下载编译好的Nacos服务端或者源代码:GitHub主页:https://github.com/alibaba/nacosGitHub的Release下载页:https://github.com/alibaba/na......
  • 02-Excel基础操作-学习笔记
    01替换场景描述:在excel表中由“部门”列,将其中的’‘一部门’‘改为’‘一车间’‘在excel表中由“地区”列,上面记录着既有“苏州”又有“苏州市”,现在要求将‘’地区‘’所在列中的“苏州”改为“苏州市”。分班:将列表中的63名同学分成2个班级,3个班级又该如何操作......
  • 软件测评笔记07--测试基础
    基本路径测试法概念在程序控制流程图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例,设计出的测试用例要保证在测试中程序的每个可执行语句至少执行一次 五种基本结构  控制流图描述程序控制流的一种图示方法,其基本符号有圆圈和箭线,圆圈为......
  • 学习笔记:生成函数II(集合分拆、置换、整数分拆、它们的递推公式、生成函数 和快速计算)
    形式幂级数的更多运算形式幂级数与幂级数的比较形式幂级数本质是序列(\(x^i\)无意义),幂级数本质是极限。形式幂级数通过带入\(x\)还原成幂级数。假设系数在\(\mathbb{C}\)上,可以证明形式幂级数与具有正收敛半径的幂级数在'通常'的所有运算上服从同样规律(加减乘除求导积......
  • 低开开发笔记(六): 工作台与模板样式开发
    好家伙,仅仅只是实现了样式,完整功能暂未完成 完整代码已开源https://github.com/Fattiger4399/ph-questionnaire.git  1.灵感来源(抄袭对象)刚开始想着随便写个低开项目练练手的,然后就写成这样了1.1.简道云 1.2.问卷星  2.上代码<template><divc......
  • 软件测评笔记06--数据库
     数据控制功能对数据库中的数据的安全性、完整性、并发和故障恢复的控制安全性:防止不合法的使用造成的数据泄露、破坏完整性:防止向数据库加入不符合语义的数据并发控制:导致数据不一致性,主要有:丢失更新、不可重复读和读脏数据,主要原因是破坏了事务的隔离性故障恢复:有三类故......
  • 软件测评笔记05--计算题
    段页式存储管理系统计算方式页大小:页内地址0-11有12位,所以是2^12=4096B=4K(11-0+1=12)页数:页号21-12有10位,所以每段有2^10=1024个页段数:短号31-22有10位,所有一共有2^10=1024个段 信号量取值范围计算方式题目:PV操作实现进程同步互斥,若n个进程共享m个东西,信号量取值范围是()m个......