![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
algorithm
hulian425
这个作者很懒,什么都没留下…
展开
-
离散化
压缩坐标上的点,只保留相对位置关系,忽略其具体大小例如四个点 2, 9, 1000, 82可以将他们转化为0,1,3,2这四个点,位置关系不变,但数值的范围变小了,有利于存储int lsh[1000], lshcopy[1000], sy[1000];int main(){ int n; scanf("%d", &n); for (int i = 0; i...原创 2020-01-20 23:04:57 · 144 阅读 · 0 评论 -
辗转相除法:Euclidean algorithms
求最大公约数例如 :36 和 6060 = 36 * 1 + 24将36和24分别前移36 = 24 * 1 + 12将24和12前移24 = 12 * 2 + 0用最小的正方形可以无缝隙地填满整个大长方形此时余数为零,最大公约数为0代码实现//c++int gcd(int a, int b){ if (!b) return a; return gcd(b,...原创 2019-08-07 17:07:04 · 117 阅读 · 0 评论 -
快速幂运算
// onetypedef long long ll;ll mod_pow(ll x, lln, ll mod) { ll res = 1; while (n > 0) { if (n & 1) res = x * x % mod; x = x * x % mod; n >>= 1; } return res;}//twoll mod_p...原创 2019-08-11 15:35:28 · 91 阅读 · 0 评论 -
素数判定
//素性测试bool is_prime(int n) { for (int i = 2; i * i <= n; i++){ if (n % i == 0) return false; } return n != 1;}//约数枚举vector<int> divisor(int n) { vector<int> res; for (int ...原创 2019-08-11 16:10:08 · 95 阅读 · 0 评论 -
从有序数组中查找某个值
int n, k;void solve(){ int lb = -1, ub = n; //重复循环,直到解的存在范围不大于1 while (ub - lb > 1) { int mid = (lb + ub) / 2; if (a[mid] >= k) { //若果mid满足条件,则解的存在范围变为(lb, mid] ub = mid; } els...原创 2019-08-15 13:35:05 · 474 阅读 · 0 评论