自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

J

  • 博客(15)
  • 收藏
  • 关注

原创 数理逻辑PC系统基本定理证明

定理34,35比较多,在下面35类似

2021-05-25 21:55:03 1180

原创 LCT学习笔记

1.关于LCT的结构?分为虚边和实边,实边代表splay,深度要中序遍历单调增。虚边,从splay中任意一个点连出,连向该splay中深度最小点在原树上的父亲。这个结构可以得出一个很基本的结论,沿着虚边走深度肯定是递减的。这也保证了access操作的可行性。2.为什么要分实边和虚边?可以类比树剖的轻重儿子,都是为了减少时间复杂度。怎么减少了?因为我们通过优先遍历重儿子使得重链上的dfs序连续,从而通过线段树维护的是重链上的信息,因而我们可以保证每一条路径中间包含的不连续的链的总数一定是log级别的

2021-05-22 19:36:04 332 1

原创 关于树上差分与双连通

树上差分解决的是树上路径修改的问题首先我们可以考虑类似于区间差分的方法,记录当前点比父亲多的值,然后求根到该点的值即为真实值,但是树上的差分不像区间的差分,是一对一的关系,树上对路径进行操作时,对一个点的差分数组加,只有一个儿子是不变的,其余儿子的差分数组都要变,复杂度就不能保证。我们可以把每一次修改都看作是两条从根节点开始的路径修改的差,那么只要修改的终点在子树中,都对该点有一定的贡献。差分数组的真实含义可以解释为,从根节点到该点的路径数目。因此点被修改次数的真实值可以转化为子树差分数组的和。个

2021-05-19 19:01:13 129

原创 XCPC博弈论大赏

博弈论大赏首要结论:NIM游戏的变式:经典例题首要结论:一:Nim游戏,必败局面为异或和等于0。证明:1.已知终止状态为所有石子数都为零,异或和也为零。2.考虑任意一个异或和非零(设为x)的状态,设其最高位的1(设为第k位)由a_i取得,因此总可以从a_i上减去一些石子,使得最高位的1变为0,其余位置调整为0。具体怎么取,两边异或上a_i,得异或和为xa_i。将a_i改为xa_i即可。(因为高于k位的同a_i,第k位小于a_i,所以x^a_i<a_i。因此任意一个非零状态总可以转化为零状态。

2021-05-09 10:33:02 467

原创 后缀自动机学习笔记

后缀自动机学习笔记前言变量阐释endposlinknext构造过程为什么这样构造可行关键性质终止状态endpos的大小子串是否出现子串第一次出现的位置前言本文主要记录后缀自动机的一些关键性质和解题的常用技巧,系统学习请转向其他博客变量阐释后缀自动机的两大关键:endpos,linkendpos不同于AC自动机中每个节点代表一个单纯的字母,回文自动机中每个节点代表一个回文串,后缀自动机中的每个节点不是也不能代表一个后缀(因为后缀的数量级是平方级的)。因此后缀自动机的每个节点代表结束位置相同的子串

2021-03-03 21:03:32 396

原创 中缀表达式转后缀表达式(二叉树实现)

前言最近在系统复习刷题单,做到了本应滚瓜烂熟的表达式转换的题,忘记了出栈入栈的规则,调了很久也没有过。最后怒写了一棵表达式树过了,个人认为这个方法便于记忆,也比较好写。代码核心流程就是在区间中寻找最后一个运算的运算符,然后将这个运算符作为根,递归左右区间进行建树,叶子节点全部为操作数。如果区间内不存在运算符,就一定只有一个数字,读入数字作为叶子节点。代码:以洛谷P1175为例#include <bits/stdc++.h>using namespace std;string s

2021-02-14 12:11:20 1274

原创 FFT学习笔记

前言本文主要是谈一谈自己对蝴蝶变换以及非递归FFT的理解,如果想全面学习FFT算法,请移步其他博客。蝴蝶变换为什么要引进蝴蝶变换?FFT的递归过程实际上是拆分奇数次和偶数次项的过程,每次将偶数次项移到左边,奇数次项移到右边,拆分成两个子多项式,以便递归计算。为了消除递归中,奇偶次项移动交换产生的冗余时间消耗,引入蝴蝶变换,在FFT之前将每一项排好顺序,递归(迭代)的时候就直接二分变换后的数组就行了。具体操作?蝴蝶变换,即将一个数在二进制表示下翻转整个二进制串形成的数。考虑从小到大计算iii翻

2021-02-05 14:14:58 245

原创 可持久化线段树学习笔记

可持久化线段树学习笔记变量释义核心流程典型例题变量释义这里以求区间第k大的例子来解释可持久化线段树#define N 200005int a[N]; //原数列,这里假设a的范围同Nint b[N]; //去重后的数列int root[N]; //每一个版本的根int cnt; //每个节点的序号int n; //数列长度int m; //询问次数struct node{ int lson,rson; //左右儿子 int sum;//落在当前节点

2021-01-31 13:39:44 121

原创 AC自动机学习笔记

AC自动机学习笔记变量释义核心流程典型例题1.求共有多少个不同的模式串出现2.求模式串的出现次数变量释义int trie[200005][26]; //AC自动机的字典树int fail[200005]; //失配指针int ans[200005]; //每个串出现的次数int pos[200005]; //每个串的结尾的序号int ed[200005]; //该节点是否为结尾,以该点结尾的模式串的数量trie数组:仍然是字典树中的那个节点,但是需要注意节点另外一

2021-01-30 17:20:37 72

原创 tarjan强连通分量SCC学习笔记

tarjan强连通分量SCC学习笔记变量释义核心流程典型应用变量释义tarjantarjantarjan算法的两个核心数组:dfndfndfn数组和lowlowlow数组。dfn数组:节点在dfsdfsdfs树上的序号(相当于一个时间戳的作用)。low数组:节点在dfsdfsdfs树上的子树(不完全是子树,要扣掉已经分配到强连通分量的点)中,所能返回的点的dfndfndfn的最小值(相当于找强连通分量的根)。lowlowlow数组比较难懂,可以意会一下,强连通分量的关键是互相可达,dfsdfsdf

2021-01-29 16:06:30 162

原创 种类并查集学习笔记

种类并查集学习笔记什么是种类并查集例题P1525 [NOIP2010 提高组] 关押罪犯P2024 [NOI2001] 食物链简单的扩展CF1475F Unusual Matrix什么是种类并查集种类并查集是一般并查集的扩展,如果说普通并查集处理的是父亲与祖先的关系,那么种类并查集在这基础上还可以处理敌人与对立的关系例题P1525 [NOIP2010 提高组] 关押罪犯这道题的难点在于如何处理关押在不同监狱的罪犯的关系,这里就可以用到种类并查集。具体实施:因为并不知道这个罪犯究竟关押在哪一个监

2021-01-27 16:18:08 199

原创 01trie树学习笔记

01trie树学习笔记问题引入什么是01trie树问题解答两个扩展例题1.第kkk大异或和2.树上最大异或路径问题引入给一个长为nnn的数列,要求一个aia_iai​,aja_jaj​,使得aixoraja_i xor a_jai​xoraj​最大。什么是01trie树类似于字典树的做法,将每一个数化为二进制数,看作01串,插入到字典树中。问题解答首先建好01trie树,然后对于每一个数,在树上跑一遍贪心,即贪心选择与这个数当前位不同的那个节点。也就是说,尽可能地保证越高的位的异或和为1,(因

2021-01-01 11:33:51 962

原创 牛客组合数学专题解题报告(持续更新)

牛客组合数学专题解题报告star 1NC19788 TravelNC50039 kotoristar 2NC14735 美丽的项链star 3star 4star 5star 1NC19788 Travel题意为:将n个节点的树分成m个连通块,并对每个连通块标号的方案数。思路:初看这道题像树形dp,但一想转移方程和数据范围,感觉不可解。换成组合数学的角度,将分成m个连通块转化为删去m-1条边,显然删去m-1条边的方案与分成m个连通块的方案是一一对应的,再将连通块标号,就是乘m的阶乘了。因此答案为

2020-11-02 12:58:17 2663 12

原创 洛谷蓝题解题报告(2020.8.4-2020.8.9)

洛谷蓝题解题报告(8.4-8.9)2020.8.4P1450 [HAOI2008]硬币购物P1438 无聊的数列P2279 [HNOI2003]消防局的设立P1463 [POI2002][HAOI2007]反素数插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入2020.8.4P1450

2020-10-07 19:39:58 1667 4

原创 Codeforces Round #637 题解(持续更新)

题解目录A. Nastya and RiceB. Nastya and DoorC. Nastya and Strange GeneratorD. Nastya and ScoreboardE. Nastya and Unexpected GuestA. Nastya and Rice国际惯例,A题必水。只需要把输入数据的范围(即[n*(a-b),n*(a+b)])与给定的范围(即[c-d,c+d])比较,看是否相交即可。代码如下:#include <bits/stdc++.h>us

2020-05-17 18:05:58 265 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除