随笔分类 -  算法心得

摘要:$ \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} 阅读全文
posted @ 2025-07-30 19:38 孤枕 阅读(22) 评论(1) 推荐(0)
摘要:对于式子\(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) 阅读全文
posted @ 2025-07-17 10:18 孤枕 阅读(16) 评论(0) 推荐(0)
摘要: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 阅读全文
posted @ 2025-02-27 19:54 孤枕 阅读(41) 评论(0) 推荐(0)
摘要:LIS是动态规划中经典的问题。 首先我们令f[i]表示前i个元素中最长上升(不下降同理)子序列长度,那么我们有: $f[i] = max{f[j] + 1 | a[i] > a[j]} $ 朴素的算法当中我们在外层枚举1~n,内层枚举1~i-1来挨个比较转移,这样的时间复杂度是 $ O(n^{2}) 阅读全文
posted @ 2024-12-18 19:46 孤枕 阅读(56) 评论(0) 推荐(0)
摘要:在素数筛法当中,首先先讲一下朴素的筛法和埃氏筛。 朴素筛法:对于任何一个数\(i\),我们从2到\(sqrt(i)\)挨个枚举看是不是i都无法整除这些数,如果是的话那么就说明\(i\)是素数,反之则不是 埃氏筛:我们发现,在朴素筛法当中我们希望枚举每个数的因子,也就是说,当我们判断4是不是素数,我们 阅读全文
posted @ 2024-12-13 09:28 孤枕 阅读(328) 评论(0) 推荐(2)
摘要:原题在这里 题目大意:给定n个数,求出这n个数中第k小的数。 做法: 1.首先直接想到的肯定是直接排序然后\(O(1)\)输出即可。这样的时间复杂度是\(O(nlogn)\),由于题目中n的数据范围过大我们无法接受。 2.再想到,我们在进行快速排序的过程中,随机选取一个数作为基准,每次将比它大的数放 阅读全文
posted @ 2024-12-11 11:23 孤枕 阅读(82) 评论(0) 推荐(0)
摘要:万能头: #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') 阅读全文
posted @ 2024-12-11 10:32 孤枕 阅读(32) 评论(0) 推荐(0)