该文被密码保护。 阅读全文
摘要:
本文会统计一些做过的绿题及以上,总结一些解法,写一些简短的题解,学习何竺凌学长大佬。 修改链接 2024.1 AT_abc271_e 可以用 DP 来解决。\(dp_{i,j}\) 代表着第 \(i\) 条边,点 \(1\) 到 \(j\) 最短距离。考虑转移方式:如果需要这个边 \((u,v,w) 阅读全文
摘要:
ABC比赛复盘 阅读全文
摘要:
Nim 游戏 甲,乙两个人玩 nim 取石子游戏。 nim 游戏的规则是这样的:地上有 \(n\) 堆石子(每堆石子数量小于 \(10^4\)),每人每次可从任意一堆石子里取出任意多枚石子扔掉,可以取完,不能不取。每次只能从一堆里取。最后没石子可取的人就输了。假如甲是先手,且告诉你这 \(n\) 堆 阅读全文
摘要:
高精度模板 copy老师的代码 @_xuefeng #include<bits/stdc++.h> using namespace std; char ch[500000]; struct node{ int s[1000000],len; void init(){ scanf("%s",ch+1) 阅读全文
摘要:
欧拉函数 定义 欧拉函数 \(\phi(n)\) 代表的是 \([1,n]\) 之间与 \(n\) 互质的数量。 公式 \(\phi(n) = n \times (1- \dfrac{1}{p_1})\times (1- \dfrac{1}{p_2})\times (1- \dfrac{1}{p_3 阅读全文
摘要:
数据结构 并查集 并查集的用法:顾名思义,可以合并也可以查询 也就是合并一个集合,查询一个集合。 记录 \(f_i\) 代表第 \(i\) 个点所属集合的祖宗(其实可以代替为这个集合的编号) 具体见代码: 首先建立一个 \(find\) 函数,\(find(x)\) 代表找到这个 \(x\) 所属的 阅读全文
摘要:
链式前向星 首先先初始化一个数组: \(head[N]\) 代表每一个 \(u\) 指向第一个 $ v$。 初始化时需要将其初始化为 \(-1\),表示每个 \(u\) 没有连的边 初始化 链式前向星使用的是插头法:每一个元素与插入链表中都是再最前面的。 插入 例如:输入一条 \(2 - 5\) 的 阅读全文
摘要:
平衡树 这里讲 非旋Treap,FHQTreap 概述 FHQTreap 的思想基于分裂和合并。 存储的信息是: \(ls\) 和 \(rs\) 左右儿子。 \(val\) 权值 \(siz\) 子树大小。 对于 Treap 比较独特的是 \(rd\),实际上是一个随机优先级。 对于相同权值的不同的 阅读全文
摘要:
CDQ分治 它是一种非常巧妙地方法。 用分治的思想处理三维偏序一类的问题: 处理的问题如下:模板 有 $ n $ 个元素,第 $ i $ 个元素有 $ a_i,b_i,c_i $ 三个属性,设 $ f(i) $ 表示满足 $ a_j \leq a_i $ 且 $ b_j \leq b_i $ 且 $ 阅读全文
摘要:
C++随机数 rand Vs mt19937 rand 和 mt19937 介绍 众所周知,程序无法模拟出真正的随机数,所以我们所说的随机数都是相对随机的伪随机数。 rand 是一种常用的随机数,C++ 初学者一般接触的都是他,但是他有缺点,随机性不高,周期短,质量低。 Mt19937 用法与 ra 阅读全文
摘要:
模拟退火,优雅的暴力 我认为有必要摘抄一下提单上的简介 ZX 写的 前言:本片适用于 模拟退火入门-进阶 模拟退火(SA) 是一种 随机化算法。当一个问题的方案数量极大(甚至是无穷的)而且不是一个单峰函数时,我们常使用模拟退火求解。 一般的,很多题都可以用模拟退火水过,在OI界称之 [优雅的暴力] 阅读全文
摘要:
分块思想 介绍 分块是一种思想,而不是一种数据结构。 思想就是,将一块大的区间,转换成小的区间来处理。例如,在一个 \(n\) 长度上的数轴,我们可以将其分成 \(\sqrt n\) 个长度为 \(\sqrt n\) 的块来解决。 典型问题 对于一类很典型的问题,可以用分块来做。 单点修改,区间查询 阅读全文