位运算
位运算
获取数字 n的二进制的第 k位是多少
先将二进制数向右移动 k位(此时 k位移动到了第一位), 操作: x >> k
获取最后一位的值, 操作: 移动后的值 & 1
两步和为一步操作: x >> k & 1
获取 n的二进制
for (i ...
双指针算法
双指针
先暴力,看单调性在优化,双指针
双指针是根据性质优化
模板
for (int i = 0, j = 0; i < n; i ++ ){ while (j < i && check(i, j)) j ++ ; // 具体问题的逻辑} ...
差分
差分
a1,a2,a3...b1,b2,b3...ai=b1+b2+...bia_1,a_2,a_3 ...
\\
b_1,b_2,b_3...
\\
a_i = b_1 + b_2 +...b_i
a1,a2,a3...b1,b2,b3...ai=b1+b2+...bi
a就 ...
高精度
高精度
在java中,由于大整数类的存在,高精度实现较为简单
此处给出代码模板
模板
package Chapter1;import java.io.*;import java.math.BigInteger;import java.util.*;public class Div { ...
前缀和
前缀和
Prefix sum
前缀和的核心思想:
初始化
相减获得前缀和
模板
// 1 维S[i] = a[1] + a[2] + ... a[i]a[l] + ... + a[r] = S[r] - S[l - 1] // 2 维sum[i][j]=sum[i-1][j]+ ...
二分
二分
二分的核心思想,就是根据check函数取划分
整数二分
整数二分,稍微麻烦点,有两套模板
模板
// 情况1public static int bsearch(int[] arr, int l, int r){ while(l < r){ i ...
归并排序
归并排序
归并排序的核心思想:分治
确定分界点
递归排序左右
归并
模板
// 输入和快排的一样public static void mergeSort(int[] arr, int l, int r){ //递归结束条件 if(l >= r) return; ...
快速排序
快速排序
快速排序的核心思想:
确定分界点,可以是q[l],q[(l+r)/2]或q[r],我们选用q[l]
调整区间,就是将就是把所有比分界点大的放到右边,所有比分界点小的放到左边
如何调整?双指针,一个从左往右走知道找到比分界点大的,一个从右往左…
找到后,交换,再继续走,直到两指针相遇
...
利用码云和hexo搭建博客
以前再GitHub上搭建过一次,但是太慢了,这次就搭建再gitee上了,国内快太多了
之前搭建的博客也特别简陋,这一次也努力美化一下
本文总结搭建过程中的一些坑:
坑点一:Nodejs和Git的下载
我本来想的是取官网下载的,但是下载的速度十分感人,不建议官网下载
https://blog.csd ...
Hello World
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in ...