随笔分类 - 算法
算法
摘要:本文从集合和高维前缀和两种角度分别介绍 SoS(Sum over Subsets) dp 问题引入 我们从一到经典的例题来引入学习 SoS dp: 对于两个二进制数 \(x\) 和 \(y\),我们定义 \(y \subseteq x\) 当且仅当 \(x \& y = x\),既 \(x\) 中为
阅读全文
摘要:原文 暴力美学——浅谈根号分治。 其实以下内容就是自己总结一下上文中的例题。 概述 根号分治是一种十分暴力且巧妙的策略,需要我们观察大数据和小数据的特点,通常他们都有各自的解法,但是每个解法又不能适应所有数据,于是我们就想到把数据按照某个界限分类。 (干说还是说不清,直接看下面 4 到题吧) CF
阅读全文
摘要:本文不涉及定理的证明(作者太菜了不会)。 公式 Lucas 定理可以在模数是质数且不大的情况下求解大组合数取模问题: 对于素数 \(p\),有 \[(^{n}_{k}) \equiv (^{\lfloor {n \over p} \rfloor}_{\lfloor {k \over p} \rflo
阅读全文
摘要:定义 两点 \(u(x_1, y_1)\) 和 \(v(x_2, y_2)\) 之间的曼哈顿距离大家都是熟悉的,即: \[|x_1 - x_2| + |y_1 - y_2| \]我们可以这样看曼哈顿距离:在棋盘中,只能水平走或竖直走,且每走一格需要花费步数 1,在这种条件下,从起点到终点的最少步数。
阅读全文
摘要:碰到这个问题的时候,我第一个想到的是固定凸多边形的一个点,然后枚举所有边与它组成三角形,最后计算三角形的面积和。知道如如何用鞋带公式求三角形的面积后,我写出了以下代码: // 鞋带公式求三角形面积 double area(std::array<i64, 2> &u, std::array<i64,
阅读全文
摘要:定义 从构建的过程来定义。 在 kruskal 算法最小生成树的过程中,我们从小到大得到了 \(n - 1\) 条最小生成树上的边。根据这些边我们重新构造一颗树,具体的,依次遍历上述 \(n - 1\) 条边,对于当前遍历到的边 \((u, v, val)\)(表示节点 \(u\) 和节点 \(v\
阅读全文
摘要:引入 有一些问题要求我们回答若干询问。这些询问通常都是互不相干的。有时候二分能够以 \(O(nlog(n))\) 的复杂度单独解决一个询问,但是对于所有的询问都采用二分的话就是 \(O(qnlog(n))\) 的复杂度会超时(可以看 ABC394 G 体会一下)。于是就有了并行二分这一解决方法。 并
阅读全文
摘要:log 25-2-26 更新了多项式乘法的实现(前面光写 fft 去了) 25-2-26 更新三次变二次优化 和 迭代 fft 问题引入 现在有两个多项式: \(A(x) = \sum _{i = 0}^{n - 1} a_i x^i\) 和 \(B(x) = \sum _{i = 0}^{m -
阅读全文
摘要:基本概念 众所周知(3,4,5)和(6,8,10)是两组勾股数,区别是前一组三个数的公因数是一而后一组的不是。像第一组勾股数一样三个数之间两两互质的就叫做 本原勾股数。而且将一组本原勾股数里的三个数同时扩大相同的倍数得到的一组数还是勾股数(只不过不是本原勾股数)。所以我们找勾股数时只用找本原勾股数就
阅读全文
浙公网安备 33010602011771号