悔いがない
今から20年後、君は自分がやったことより、やらなかったことに失望するだろう。だから帆を開き、安全な港から船を出し、貿易風を帆にとらえよう。探検し、夢を見て、何かを発見するのだ。
Go语言调试及性能分析 Go语言调试及性能分析
写程序的时候经常需要我们分析程序运行的性能、debug,本篇文章将通过几个场景介绍几个相关工具的简单使用。 分析程序的运行时间和CPU利用率shell内置的time指令假如我们有一个go程序: package main import
2023-08-10
Go语言GC分析 Go语言GC分析
垃圾回收(Garbage Collection)是编程语言提供的自动内存管理机制,能够自动释放不需要的内存对象,无需程序员手动管理。Go语言的GC也经历了多次变革,从V1.3之前的标记清除法,到V1.5的三色并发标记法,再到V1.8的混合
2023-08-08
Go语言协程调度器GPM Go语言协程调度器GPM
开坑,准备做一个深入理解Go语言系列,适合系统学过C/C++,学过Go语言基础用法,想深入理解Go语言的读者,至于为什么最近在用Go,主要是C++太难用了,缺少各种常用库,还没有好的模块管理,跨平台也麻烦,而Go应该算是解决了这些问题、而
2023-07-25
LCT LCT
动态树问题:维护一个森林,支持删除某条边,加入某条边并保证时刻是一个森林,我们需要维护森林的一些信息,一般的操作有询问两点连通性,询问两点路径的权值和,修改某点的权值。 基本介绍$LCT$是用来解决动态树问题的数据结构,各种操作的时间复
2022-09-06
splay splay
简单介绍伸展树($splay$),也叫分裂数,是一种平衡二叉树,能在$O(log\ n)$的时间复杂度内完成插入,查找和删除操作,比较好写而且很实用,$LCT$也经常借助$splay$来实现,是一种在竞赛中比较常用的数据结构。本篇就来给大
2022-09-05
可并堆 可并堆
可并堆,又叫左偏树,是一种支持合并的堆,以下内容基于小根堆(即根节点最小,大根堆类似),它支持以下功能: 求一个数所在堆的根节点(复杂度同并查集路径压缩) $O(1)$求最小值 $O(log\ n)$合并两个堆 $O(log\ n)$删除
2022-09-01
虚树 虚树
先由一道例题引入:消耗战 对于这个问题的每个询问,我们直接树形$DP$就很容易解决了,然而,问题就在于如果我们每次$DP$都遍历整个树,那时间复杂度就爆炸了,但我们发现我们每次询问涉及到的点很少,这时就引入了我们的虚树,我们只需要把我们需要
2022-08-29
背包问题第K优解 背包问题第K优解
首先,我们由一道题引入:小L打怪兽 很明显,对于这道题,$k=1$时我们要求的就是一个完全背包问题,但$1\le k\le100$,这时我们可以考虑多开一位状态,用$dp[i][j]$表示花费$i$体力情况下第$j$优解,我们知道在完全背包
2022-08-28
前后缀和优化建图 前后缀和优化建图
先把遇到的问题放出来,然后再解决问题。 题目链接:Riddle 很明显,这是一道$2-SAT$问题,每条边至少有一个端点是关键点,若我们用$x$表示$x$是关键点,$x+n$表示$x$不是关键点,则对于一条边$x-y$,我们可以得到$x+n
2022-08-24
后缀自动机 后缀自动机
后缀自动机,又称为SAM,是个有限状态自动机,我们可以把它看作一张有向拓扑图。由一个起点、若干终点组成。原串的所有子串和从SAM起点开始的所有路径一一对应,不重不漏。所有到达终点的路径就是原串的一个后缀。其中,每个点包含若干子串,每个子串
2022-07-27
后缀数组 后缀数组
后缀数组常用的算法有两种,一种是倍增,一种是DC3,其中DC3是线性的,不过代码更恶心,常数也比较大,这里本人就先讲一下倍增的做法,虽然时间复杂度略差,不过还是很好用的。
2022-07-27
线段树 线段树
本文章以线段树的拓展为主,不会讲解基础内容。另外本人目前比较忙,将在军训和第三学期后更新内容,现只列出大纲和例题。 线段树妙用HH的项链 喵星球上的点名 多tag后效性处理维护序列 线段树合并Dominant Indices 线段树分裂Ma
2022-06-21
1 / 2