NOT

KMP

我们要查询 $A$ 是不是 $B$ 的子串 设 $g_i=\max\{j\}$,其中 $j0&&a[j+1]!=a[i]) j=g[j]; j+=(a[j+1]==a[i]), g[i]=j; } for(int i=1, j=0; i0&&(j==n||a[j+1]!=b[i])) j=g[j]; ......
KMP

最小表示法

对于一个字符串 $S$, 可以随意把祂头部的放到尾部,这样弄出来最小的字符串 $\min\{S'\}$ 就是 $S$ 的最小表示( 通过这种方法,我们可以快速搞同构串 qwq 我们先 断环成链,那么就变成了找长度为 $n=|S|$ 的最小子串 我们用 $x$ 对应 $S[x],...,S[x+n-1 ......
表示法

矩阵乘法

### 定义 俩矩阵 $A,B$,一个 $m*n$,一个 $n*u$ $C=A*B$ 计算公式为 $$ c[i][j]=\sum^{n-1}_{k=0}{a[i][k]*b[k][j]} $$ + 如果行数和列数相同的矩阵,可以称为方阵 + 如果方阵的对角线元素是 $1$,其余元素都是 $0$,那么 ......
乘法 矩阵

Miller Rabin 质数判定

费马小定理 $p$ 为素数且 $a\bot p$,有 $a^{p-1}\equiv 1(\mod p)$ 二次探测定理 $p$ 为素数且 $a^2\equiv1(\mod p)$,那么 $a\equiv\pm1(\mod p)$ 素数 $p$ 为素数,那么 $p=2$ 或者 $2\nmid p$ 把 ......
质数 Miller Rabin

二维树状数组

其实就是套娃。 一块一块维护。 ```cpp int tr[MN]; void add(int x,int y,int v) { for(int i=x; i<=n; i+=i&-i) for(int j=y; j<=m; j+=j&-j) tr[i][j]+=v; } int ask(int x, ......
数组

扫描线

求矩形面积并,把矩阵竖着割开,累加。 矩形 $(x_1,y_1,x_2,y_2)$ 分成 $(x1,y1,y2,1)$ 和 $(x2,y1,y2,-1)$ 两条线,指的是,$x=x_i(y_1\leq x\leq y_2)$ 这样的线,土 $1$ 指的是加上或减去。 需要离散 flower,主要是 ......
扫描线

大O表示法

大O表示法用来度量一个算法的运行时间。书写为O(n),其中n为一个算法所执行的操作次数。当我们讨论算法的运行时间时,说的是一个算法在给定的输入列表增加的情况下算法执行操作数的增速,也就是运行时间的增速。 #### 二分查找算法 下面介绍两种简单的查找算法说明算法运行时间随输入数的增加的增速。 小明心 ......
表示法

堆排序(topk 问题)(NB)

> 博客地址:https://www.cnblogs.com/zylyehuo/ ```python # _*_coding:utf-8_*_ # 比较排序 import random def sift(li, low, high): # 堆的向下调整(小根堆) i = low j = 2 * i ......
问题 topk

最近公共祖先

### 定义 对于两个点,LCA是它们的祖先(或自己)中距离他们最近的点 ### 不妙做法 查询 $O(n)$ #### 向上标记 Rt. 一个节点不断往父节点跑,标记节点 另一个节点也是往上跑碰到标记过的就是LCA #### 向上调整 Rt. 深度深的节点往上调,调到深度一样 如果调成一样了第一个 ......
祖先

树状数组

### 前置知识:lowbit运算 $lowbit(x)$ 表示正整数 $x$ 在二进制表示下最低位的 $1$ 跟后面的 $0$ 构成的数值 ,有 $lowbit(x)=x$ & $ ($ ~$~x+1)$ ,即 $lowbit(x)=x$ & $-x$,理由如下: $lowbit(x)$ 是最后一 ......
数组

Treap

### BST $v_i$ 表示点权,$x$ 表示当前点,$L$ 表示左子树,$R$ 表示右子树 在普通二叉树的基础上多一个条件 对于 $p\in L$,满足 $v_p\leq v_x$ 对于 $q\in R$,满足 $v_x using namespace std; struct node { i ......
Treap

树链剖分

### 引入 维护一棵树,支持两种操作 + 改变边权 | 边权 + 询问路径中最大权(或其他) BF 的期望是 $O(\log n)$,但是容易退化成 $O(n)$,所以引入树链刨分,这里用轻重链刨分 ### 轻重链刨分 记 $SIZE_i$ 表示以 $i$ 为根的子树的节点个数,那么对于 $x$ ......

线性筛与欧拉函数

很萌很可爱!就是把纸质笔记上 letex 写在这里有亿点慢 ### 线性筛 埃氏筛, $O(n\log\log n)$ ,思路是 ⌈ 标记所有质数的倍数 ⌋ 这样每个合数可能会被标记好几次,我们改进一下,让每个合数只有一种被标记的方式,即 ⌈ 最小质因子 * 常数 ⌋ 具体而言,⌈ 枚举 $2\to ......
线性 函数

斜率优化DP

### 前置芝士 单调队列优化 DP ⌈ 写不动数据结构呜呜呜,先来补这个 ⌋ 对于一个 DP,我们想优化祂的 ⌈ 转移 ⌋ 有些题目的可选状态有以下特征 + 需要寻找最值 + 可选状态区间平移 + 存在可以永久去除的多余状态 感性的讲,可行性是一个滑动窗口,状态两两之间都可以 ⌈ 直接比较出优劣 ......
斜率

主席树

~~详细介绍看心情可能会补~~ ~~放这就是想方便参考顺便水篇博客~~ 我们要维护一个数组的信息,但是我们也要查询历史信息 大概思想是不同线段树相同的部分共用点 每次修改都复制原来点再进行修改,这样肯定不冲突 通过记录不同版本根节点编号来做索引 其实写起来跟普通线段树的区别就是修改的时候需要重新建点 ......
主席

8.8

今天主要学习了下编程的知识点,看了看视频。出去玩了一圈,上衡水湖溜达了溜达。 静态代码块的特点如下: 静态代码块类似于一个方法,但它不可以存在于任何方法体中。 静态代码块可以置于类中的任何地方,类中可以有多个静态初始化块。 Java 虚拟机在加载类时执行静态代码块,所以很多时候会将一些只需要进行一次 ......
8.8

8.10

今天好哥们请客,一块去吃了顿夜宵,然后一块去网吧干了会儿游戏,回家就下午四五点了,也没吃饭,再刷了会儿视频,猛然想起来读后感的事,然后就起来看了看大道至简的书,把之前的笔记归置归置,然后开始写读后感了。 ......
8.10 10

Django实现文件上传、文件列表查看、修改、限流和日志记录

Django实现文件上传、文件列表查看、修改、限流和日志记录 本章先简单实现文件的上传,后续会将标题的功能一 一添加上去实现,并且给出远程服务器的不同连接方式【密码和秘钥】,欢迎继续关注。 安装了Django框架 pip install django 创建一个Django项目 django-admi ......
文件 Django 日志

系统化掌握营销策略基础知识的方法

独自进入一个行业,如果你没有几年的行业经验或者独特的营销方式,很难在行业里站住脚(每个行业潜规则都很多)。 每个行业都有周期,都有很多竞争对手,你扎进去一个具体的行业,对于各种资源有限的自己来说,风险很大,时间成本很高。 所有行业都有一个一致的底层本质,就是营销,任何行业都需要做营销,所以,只要掌握 ......
基础知识 策略 基础 方法 知识

maven系列:简介和安装配置(Mac、Linux、Windows、settings.xml、IDEA配置)

[TOC] ## 一、简介 官网:https://maven.apache.org maven 是一个项目管理工具,主要作用是在项目开发阶段对Java项目进行依赖管理和项目构建。 依赖管理:就是对jar包的管理。通过导入maven坐标,就相当于将仓库中的jar包导入了当前项目中。 项目构建:通过ma ......
settings Windows 简介 maven Linux

【JavaScript41】axios

## 由于jquery有严重的地狱回调逻辑. 再加上jquery的性能逐年跟不上市场节奏. 很多前端工程师采用axios来发送ajax. 相比jquery. axios更加灵活. 且容易使用. 更加美丽的是. 这玩意是用promise搞的. 所以更加贴合大前端的项目需求. ## 示例 - 服务器端 ......
JavaScript axios 41

题解 CF1076D Edge Deletion

[题目链接](https://www.luogu.com.cn/problem/CF1076D) 既然题目让我们求保留 $k$ 条边的最大好点数量,那我们首先思考这样的问题:什么情况下删一条边必定会删一个点。 显然,只有树才会出现这样的情况,而在一个连通图还没有删成树之前,删边对于点的数量是没有影响 ......
题解 Deletion 1076D 1076 Edge

CF650A 题解

## Problem [原题链接](https://www.luogu.com.cn/problem/CF650A) ## Meaning 求曼哈顿距离和欧氏距离相等的坐标组数量。 ## Solution 这道题用枚举复杂度较高,我们考虑探究当两点的曼哈顿距离与欧氏距离相等时,它们横纵坐标的关系。 ......
题解 650A 650 CF

对拍

### 随机数 ``` #include #include srand((unsigned)time(NULL)); ``` 之后可调用```rand()```函数,生产 $0$ ~ $32767$ 的整数 ### 对拍 写三个程序,正解,暴力和数据生成 整出来三个 exe 文件 建一个 bat 文 ......

SPFA

给定一张 $n$ 个点、$m$ 条边的有向图,求 $1$ 号点到每个点的最短路径长度。 我们用 $dis_{i}$ 表示从点 $1$ 到点 $i$ 的最短距离。 + 初始化 $dis_{1}$ 为 $0$,其余为无穷大,搞一个队列并将起点入队 + 取队头 $x$,遍历它的出边 $x$ 至 $y_i$ ......
SPFA

ST 表

设 $f[i][j]$ 表示从第 $i$ 位开始 $2^j$ 的最值 很明显,有 $f[i][0]=a_i$ 还有 $f[i][j]=\max\{f[i][j-1],f[i+2^{j-1}][j-1]\}$ ### 预处理 ``` void prevwork() { for(int i=1; i<= ......
ST

Dijkstra

给定一张 $n$ 个点、$m$ 条边的有向图,求 $1$ 号点到每个点的最短路径长度。 我们用 $dis_{i}$ 表示从点 $1$ 到点 $i$ 的最短距离。 + 初始化 $dis_{1}$ 为 $0$,其余为无穷大 + 找出点 $i$ ,满足 $dis_{i}$ 是未标记节点中 $dis$ 值最 ......
Dijkstra

最长上升子序列

## 最长上升子序列 ### 题目描述 给定一个长度为 $n$ 的数列 $a$,求其最长上升子序列长度 ### DP $O(n^2)$ $f[i]$ 表示以 $i$ 结尾的最长上升子序列 显然有 $f[i]=max(f[i],f[j]+1)$ 其中 $1\leq i \leq n,1\leq j\l ......
序列

最长公共子序列

## 最长公共子序列 ### 题目描述 给定长度为 $n$ 的数组 $a$,长度为 $m$ 的数组 $b$,求其最长公共子序列长度 ### DP $f[i][j]$ 表示 $a$ 前 $i$ 项和 $b$ 前 $j$ 项的最长公共子序列长度 因为如果我们要在序列尾巴上加元素是不跟前面选了什么有关系的 ......
序列

乘法逆元

#### 定义 若在$\mod p$ 意义下,对于一个整数 $a$ ,有 $a*x\equiv 1(\mod p)$,那么这个整数 $x$ 即为 $a$ 的乘法逆元,同时 $a$ 也为 $x$ 的乘法逆元。 #### 充要条件 $a$ 存在模 $p$ 的乘法逆元的充要条件是 $\gcd(a,p)=1 ......
乘法