Commit d349471f authored by 24OI-bot's avatar 24OI-bot
Browse files

style: format markdown files with remark-lint

parent fc477afb
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -78,7 +78,7 @@ int main() {

然后?

开个数组 $mem$ , 记录下来每个 $dfs(pos,tleft)$ 的返回值。刚开始把 $mem$ 中每个值都设成 $-1$ (代表没访问过). 每次刚刚进入一个 dfs 前(我们的 dfs 是递归调用的嘛), 都检测 $mem[pos][tleft]$ 是否为 $-1$ , 如果是就正常执行并把答案记录到 $mem$ 中,否则?
开个数组 $mem$ , 记录下来每个 $dfs(pos,tleft)$ 的返回值。刚开始把 $mem$ 中每个值都设成 $-1$ (代表没访问过)每次刚刚进入一个 dfs 前(我们的 dfs 是递归调用的嘛)都检测 $mem[pos][tleft]$ 是否为 $-1$ , 如果是就正常执行并把答案记录到 $mem$ 中,否则?

**直接返回 $mem$ 中的值!**

@@ -116,7 +116,7 @@ int main() {
#### 总结一下记忆化搜索是啥:

-   不依赖任何**外部变量**
-   答案以返回值的形式存在,而不能以参数的形式存在(就是不能将 dfs 定义成 $dfs(pos ,tleft , nowans )$ , 这里面的 nowans 不符合要求).
-   答案以返回值的形式存在,而不能以参数的形式存在(就是不能将 dfs 定义成 $dfs(pos ,tleft , nowans )$ , 这里面的 nowans 不符合要求)
-   对于相同一组参数,dfs 返回值总是相同的

* * *
@@ -211,7 +211,7 @@ int main() {

-   记忆化搜索可以避免搜到无用状态,特别是在有状态压缩时

举例:给你一个有向图(注意不是完全图), 经过每条边都有花费,求从点 1 出发,经过每个点**恰好一次**后的最小花费(最后不用回到起点), 保证路径存在。
举例:给你一个有向图(注意不是完全图)经过每条边都有花费,求从点 1 出发,经过每个点**恰好一次**后的最小花费(最后不用回到起点)保证路径存在。

dp 状态很显然:

+1 −1
Original line number Diff line number Diff line
@@ -55,7 +55,7 @@ end;

那我们先扯一下主席树的内容。在用主席树求区间第 $K$ 小的时候,我们以 $K$ 为基准,向左就向左,向右要减去向左的值,在划分树中也是这样子的。

查询难理解的,在于**区间缩小**这种东西。下图,我查询的是 $3$ 到 $7$ , 那么下一层我就只需要查询 $2$ 到 $3$ 了。当然,我们定义 $left,right$ 为缩小后的区间(目标区间), $l,r$ 还是我所在节点的区间。那为什么要标出目标区间呢?因为那是**判定答案在左边,右边的基准**
查询难理解的,在于**区间缩小**这种东西。下图,我查询的是 $3$ 到 $7$ , 那么下一层我就只需要查询 $2$ 到 $3$ 了。当然,我们定义 $left,right$ 为缩小后的区间(目标区间) $l,r$ 还是我所在节点的区间。那为什么要标出目标区间呢?因为那是**判定答案在左边,右边的基准**

![](./images/dividing2.png)

+1 −1
Original line number Diff line number Diff line
@@ -16,7 +16,7 @@ Split-Merge Treap

如果把 Treap 变为非旋转的,我们发现可以通过可持久化**Merge****Split**操作就可以完成可持久化。

「一切可支持操作都可以通过**Merge****Split****Newnode****Build**完成」,而**Build**操作只用于建造无需理会,**Newnode**(新建节点)就是用来可持久化的工具。
「一切可支持操作都可以通过**Merge\*\***Split\***\*Newnode\*\***Build**完成」,而**Build**操作只用于建造无需理会,**Newnode\*\*(新建节点)就是用来可持久化的工具。

我们来观察一下**Merge****Split**,我们会发现它们都是由上而下的操作!

+2 −2
Original line number Diff line number Diff line
@@ -53,6 +53,6 @@

一般来讲,我们可以用 `bitset` 优化一些可行性 DP, 或者线筛素数 ( `notprime` 这种 `bool` 数组可以用 `bitset` 开到 $10^8$ 之类的)

它最主要的作用还是压掉了内存带来的时间优化, $\frac{1}{32}$ 的常数优化已经可以是复杂度级别的优化了,比如一个 $N = 1000$ 的 $O(N^3)$ 算法, $10^9$ 显然很卡,在常数大一点的情况下必然卡不过去,**O(松)不能算!!!!**, 这时候如果我们某一维除以 32, 则可以比较保险的过了这道题
它最主要的作用还是压掉了内存带来的时间优化, $\frac{1}{32}$ 的常数优化已经可以是复杂度级别的优化了,比如一个 $N = 1000$ 的 $O(N^3)$ 算法, $10^9$ 显然很卡,在常数大一点的情况下必然卡不过去,**O(松)不能算!!!**, 这时候如果我们某一维除以 32, 则可以比较保险的过了这道题

其实 `bitset` 不光是一个容器,更是一种思想,我们可以通过手写的方式,来把 `long long` 什么的压成每 bit 表示一个信息,用 STL 的原因更多是因为它的运算符方便
+3 −3
Original line number Diff line number Diff line
@@ -14,12 +14,12 @@
-   [Judge Duck Online](https://duck.ac/)(松松松的 OJ,精确到 $\mu s$ )
-   [JoyOI](http://www.joyoi.cn/)(原 Tyvj)
-   [LibreOJ](https://loj.ac/)
-   [洛谷](https://www.luogu.org/) (常用 OJ,现代 OJ 支持发布比赛等很多功能)
-   [洛谷](https://www.luogu.org/)常用 OJ,现代 OJ 支持发布比赛等很多功能
-   [牛客网](https://www.nowcoder.com/)
-   [OpenJudge](http://openjudge.cn/)
-   [POJ](http://poj.org/) (PKU OJ,国内历史最悠久的 OJ 之一,很多英文题,有一些基础题和好题)
-   [POJ](http://poj.org/)(PKU OJ,国内历史最悠久的 OJ 之一,很多英文题,有一些基础题和好题
-   [PTA - 拼题 A](https://pintia.cn/)
-   [Universal Online Judge](http://uoj.ac/) (VFK 的 OJ,多原创比赛题和 CCF/THU 题 难度较高)
-   [Universal Online Judge](http://uoj.ac/)(VFK 的 OJ,多原创比赛题和 CCF/THU 题 难度较高
-   [Vijos](https://vijos.org/)
-   [Virtual Judge](https://vjudge.net/)(可以方便的在 Vjudge 上提交别的 OJ 的题,尤其是一些国内不太方便的 OJ)
-   [ZOJ](http://acm.zju.edu.cn/onlinejudge/)(浙大)
Loading