嘉嘉
Nice to meet you lol
嘉嘉的博客

信息
文章归档

数学笔记——矩阵

UPD@2025.8.12 修复了数学公式的一些锅 讲解了一些关于矩阵的内容 矩阵 矩阵其实是个二维数组,让数按方形排列出来就是个矩阵了,与二维数组不同矩阵上定义了许多的操作。 在代码中我们为表示一个矩阵不止需要定义一个矩阵还要存储矩阵的长和宽: struct mat{ int a[110][110]; int x,y; } 在表示时应该在方阵外套上一个方/圆括号,为方便演算我们会用一个大写字母表示它 矩阵常用有加减、数乘、乘法、转置 矩阵加减、数乘满足结合律、分配律、…

0   2023-08-20  

数学笔记——组合计数

啊~我讨厌数学 ——沃若老师 本笔记讲述了与组合计数有关的内容! 组合数 $$C(n,m)=C(n,n-m)=\frac{n!}{(n-m)!m!}$$ 其中 $n!=n\times(n-1)\times(n-1)\times\dotsc\times 1$,为了使 $n!=n\times(n-1)!$ 成立我们令 $0!=1$ 组合数的递推公式(可用作预处理)时间复杂度 $O(nm)$: $$C(n,m)=C(n-1,m)+C(n-1,m-1)$$ 当然在给定模数的情况下你也可以预处理阶乘和阶乘的逆元,时间复杂度下降到 $O(n)$ 可重排列 考虑有 $n$ 个球,第 $i$ 种球有 $a_i$ 个…

0   2023-08-13  

数学笔记——不定方程、同余、欧拉函数、逆元、中国剩余定理

介绍了不定方程、同余、欧拉函数、逆元、中国剩余定理的相关知识 不定方程 形如 $ax + by = c$,其中 $a$, $b$, $c$ 是已知数的方程被称为二元一次不定方程。它有解当且仅当 $\gcd(a,b)\mid c$ 我们可以通过扩展欧几里得算法求不定方程: void exgcd(int a, int b, int &x, int &y) { if (a % b == 0) { x = 0; y = 1; } else { exgcd(b, a % b, y, x); y -= a / b * x; } } 同余 这是一个同余式: $$a \equiv b \pmod p $$ …

1   2023-08-08  

洛谷虚拟赛-5总结

洛谷虚拟赛-5的总结 分数 & 排名 预期分数: $$ 100+100+50+20=270 $$ 实际分数: $$ 100+100+40+30=270 $$ 排名 $10$ 分析 T1 真的在送分 确实是‘在送分’,写个桶或是map就可以了 string s; cin >> s; int ss = s.size(), ans = 0; for (int i = 0; i < 26; ++i) t[i] = false; for (int i = 0; i < ss; ++i) if (!t[s[i] - 'A']) t[s[i] - 'A'] = true, ++ans; cout << ss << ' ' << a…

1   2023-03-18  

图论

图论的笔记 Kruskal 最大/小生成树算法 一棵 $n$ 个节点的树可以理解为一个 $n$ 个节点; $n-1$条边的连通图(一个节点可以到达任意一个其它节点) 即,断开一条边,树分为两个连通块。则断开 $k$ 条边树被分为 $k+1$ 个连通块。 生成树是什么? 从一张 $n$ 个节点 $m$ 条边的图中选出 $n-1$ 条边,组成一个(连通的)树 最小生成树:边权最小的生成树;最大生成树相反。 反向考虑一棵树的构建过程: 一开始是 $n$ 个独立的点(连通块),然后每增加…

0   2023-02-05  

虚拟赛-2总结

洛谷虚拟赛-2的总结 分数 & 排名 预期分数: $$ 100+80+100+0=280 $$ 实际分数: $$ 60+90+0+0=150 $$ 排名12 分析 第一题么,看到数据范围觉得要开 long long,实际也在输入时开了,但判断是否为素数的那个函数忘记开了。以后这种情况应该直接 #define int long long、signed main()! 第二题因为存图的时候用的 set 而非 vector,而这种使用场景中又没有去重的需求,所有导致了两个点 TLE。 第三题用优先队列+符号重载写的,最后提交的时候…

0   2023-01-30  

虚拟赛-1总结

洛谷虚拟赛-1的总结 分数 & 排名 预期分数: $ 100+100+100+?=3?0 $ 实际分数:$ 100+100+70+40=310 $ 排名第五 分析 第一题和第二题比较简单,都对。 第三题由于使用了暴力解法,#15~#20出现了超时的现象。本来以为 $ 3000 $ 的数据范围 $ 3000 \times 3000 \times 3000=3 \times 10^9 $ 勉强能卡过(以为 $ 10^9 $ 可以在一秒内运行),可实际不能,而且 $ \gcd $ 的复杂度没有考虑。 第四题看到“最大值尽量小”就想到了二分,二分写得也是…

0   2023-01-19  

并查集

并查集是一种动态维护多个不重复集合 在并查集中,每个集合都有自己的代表元素。 一个树 $ fa $ 记录每一个元素的归属关系(存储所属集合代表元素的下标)。 具体: 初始状态: 即,每个元素都是一个单独的集合 int fa[mxn]; for (int i = 0; i < n; i++) fa[i] = i; 常见操作 Get 查询一个元素属于哪一个集合(通常题目中会问两个元素是否属于同一集合) int find(int x) { if (fa[x] == x) return x; return fin…

0   2023-01-18  

C++ STL那些事

仍在施工中 介绍C++ STL的一些函数和容器的用法。 简介 C++ Standard Template Library(标准模板库),简称 STL 成员 容器 map 有建立映射的关系。对于每一个 $key$ 有一个 $value$ 与之对应。 $$ key -> value $$ 时间复杂度 $ O(log_n) $ 使用前包含头文件 <map> #include<map> 比如我们新建了一个 map 叫 m,$key$ 是 string 类型,$key$ 是 int 类型,可以这么写: map <string, int>m; m.find(x):传入 $k…

0   2023-01-18  

字符串问题 笔记

字符串Hash,KMP,字典树的一些笔记 字符串Hash 这是什么 一个可以将任意长度的字符串映射为一个非负整数的算法。即,不同的字符串映射出不同的值,相同的映射出相同的值。 原理 将字符串视作一个 $ P $ 进制的数,对于字符串中的每个字符分配一个数值 字符集是字符串中有可能出现的字符的一个集合,如,小写字母的字符集为 $ \{a, b, c, d, ..., z\} $ 同样以小写字母为例,分配 $ a=1, b=2, ...$ 一般情况下,将 $P$ 设为 $13331$ 即可 但如果串很…

0   2023-01-14  
加载更多