随笔分类 - 算法心得
摘要:$ \varphi (ij)=\frac{\varphi (i)\varphi (j)}{\varphi (gcd(i,j))}*gcd(i,j)$ $ \mu (ij)=\mu (i) \mu(j)[gcd(i,j)=1]$ $ d(ij)=\sum_{d_{1}|i}\sum_{d_{2}|i}
阅读全文
摘要:对于式子\(ax + by = c\),首先规定\(c | gcd(a,b)\) ,我们令\(tmp = gcd(a,b)\),先解出方程\(ax + by = gcd(a,b)\)的整数解\(x_{0},y_{0}\),接着可以得到对于原式,我们有\(a\frac{x_{0}c}{gcd(a,b)
阅读全文
摘要:int quickMul(int x,int k,int mod) { //用来求逆元 if(k == 0) return 1; int tmp = quickMul(x,k / 2); tmp = (tmp * tmp) % mod; if(k & 1) tmp = (tmp * x) % mod
阅读全文
摘要:LIS是动态规划中经典的问题。 首先我们令f[i]表示前i个元素中最长上升(不下降同理)子序列长度,那么我们有: $f[i] = max{f[j] + 1 | a[i] > a[j]} $ 朴素的算法当中我们在外层枚举1~n,内层枚举1~i-1来挨个比较转移,这样的时间复杂度是 $ O(n^{2})
阅读全文
摘要:在素数筛法当中,首先先讲一下朴素的筛法和埃氏筛。 朴素筛法:对于任何一个数\(i\),我们从2到\(sqrt(i)\)挨个枚举看是不是i都无法整除这些数,如果是的话那么就说明\(i\)是素数,反之则不是 埃氏筛:我们发现,在朴素筛法当中我们希望枚举每个数的因子,也就是说,当我们判断4是不是素数,我们
阅读全文
摘要:原题在这里 题目大意:给定n个数,求出这n个数中第k小的数。 做法: 1.首先直接想到的肯定是直接排序然后\(O(1)\)输出即可。这样的时间复杂度是\(O(nlogn)\),由于题目中n的数据范围过大我们无法接受。 2.再想到,我们在进行快速排序的过程中,随机选取一个数作为基准,每次将比它大的数放
阅读全文
摘要:万能头: #include<bits/stdc++.h> cin加速: ios::sync_with_stdio(0); cin.tie(0); 快读: inline int read() { int x=0,f=1;char ch=getchar(); while (ch<'0'||ch>'9')
阅读全文

浙公网安备 33010602011771号