Commit cb948ef3 authored by ir1d's avatar ir1d
Browse files

Merge remote-tracking branch '24OI/master' into lint

parents 7718d28e 559c4a1b
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -100,7 +100,7 @@ void tarjan(int u) {

Kosaraju 算法依靠两次简单的 DFS 实现。

第一次 DFS,选取任意顶点作为起点,遍历所有访问过的顶点,并在回溯之前给顶点编号,也就是后序遍历。
第一次 DFS,选取任意顶点作为起点,遍历所有访问过的顶点,并在回溯之前给顶点编号,也就是后序遍历。

第二次 DFS,对于反向后的图,以标号最大的顶点作为起点开始 DFS。这样遍历到的顶点集合就是一个强连通分量。对于所有未访问过的结点,选取标号最大的,重复上述过程。

+1 −1
Original line number Diff line number Diff line
@@ -30,7 +30,7 @@ Code Runner 是一个可以一键运行代码的插件,在工程上一般用
### 使用 C/C++ 插件编译并调试

???+ warning
    在配置前,请确保你已经安装了[MinGW-w64](https://mingw-w64.org/doku.php/download)[Clang](https://releases.llvm.org/download.html),并已经将它们添加到了 `path` 中。
    在配置前,请确保你已经安装了[MinGW-w64](https://mingw-w64.org/doku.php/download)[Clang](https://releases.llvm.org/download.html),并已经将它们添加到了 `path` 中。请确保你没有使用 `Git Bash` ,而是使用 `cmd` 或者 `powershell` 作为集成终端。

#### 配置编译与调试

+18 −0
Original line number Diff line number Diff line
@@ -100,6 +100,24 @@ int main() {

* * *

## 一些技巧

### 分块模拟退火

有时函数的峰很多,模拟退火难以跑出最优解。

此时可以把整个值域分成几段,每段跑一遍模拟退火,然后再取最优解。

### 卡时

有一个 `clock()` 函数,返回程序运行时间。

可以把主程序中的 `simulateAnneal();` 换成 `while ((double)clock()/CLOCKS_PER_SEC < MAX_TIME) simulateAnneal();` 。这样子就会一直跑模拟退火,直到用时即将超过时间限制。

这里的 `MAX_TIME` 是一个自定义的略小于时限的数。

* * *

## 习题

-   [「BZOJ 3680」吊打 XXX](https://www.lydsy.com/JudgeOnline/problem.php?id=3680)