摘要:
快速排序 while写法 #include <iostream> using namespace std; const int N = 1e5 + 10; int n; int q[N]; void quick_sort(int q[], int l, int r) { if(l >= r) ret 阅读全文
摘要:
前缀和 前缀和是一种重要的预处理,能大大降低查询的时间复杂度。可以简单理解为“数列的前项的和”。 C++代码: #include <iostream> using namespace std; int N, A[10000], B[10000]; int main() { cin >> N; 阅读全文
摘要:
Trie:高效地存储和查找字符串集合的数据结构 Trie树的存储 比如说要存储下面这些字符串 从根结点开始存 然后若一个结点是一个单词的末尾,则要打上一个标记,从根结点到该结点存在一个单词,图中用五角星表示标记。 这是Trie树的存储。 Trie树的查找 Trie树可以高效地查找某个单词是否出现过以 阅读全文
摘要:
差分约束 ##1. 求不等式组的可行解 对于以上不等式,差分约束可以得到一组可行解。 在最短路中,求完最短路后,对于每个从j->i可以看成一个不等式 说通俗点就是给我们一个图,我们可以把每条边看成一个不等式,我们在这个图上求每个点到源点的最短距离,求完之后,每个边 阅读全文
摘要:
取模运算的性质 But: 乘法逆元 在算法竞赛中,经常会遇到求解数据很大,则输出模 的解这类要求。加法、减法、乘法等操作,基于同余理论直接取模即可。但遇到除法时,某步中间结果不一定能完成整除,就无法求解了。所以引入了乘法逆元。 从网上找了几种不同的定义: 定义1: 定义2: 核 阅读全文
摘要:
在做一道DFS类型的题目时,需要从坐标(x,y)遍历棋盘 遍历的方向为上下左右,如下图 坐标系很常规,即数组坐标系,x轴向下,y轴向右 关键是这里的遍历方向的序号,上右下左分别编号为0123 0的反向边为2,1的反向边为3 这里表示反向边的技巧就是异或2 用代码表示反向边为i ^ 2,验算,0 ^ 阅读全文
摘要:
线性筛法求欧拉函数 int primes[N],cnt; //线性筛质数的primes数组和cnt int phi[N]; //phi表示欧拉函数 bool st[N]; void get_eulers(int n) { /*1∼N 中与 N 互质的数的个数被称为欧拉函数,记为 ϕ(N)。*/ ph 阅读全文