蓝桥杯经验

  1. 四舍五入。保留几位数字,保留几位小数
  2. 填空题一定要验证答案是否正确,编程题多跑几个样例
  3. 多写几个测试用例。极限值。
  4. 递推和递归,递归注意栈溢出
  5. 区间优化 :加一个前缀数组。例题:K倍区间
  6. 考虑答案的数量级 用int还是long接受答案
  7. 时间复杂度:计算机一秒可以处理1e7-1e8个数据。因此如果数据太大即使是O(n)的复杂度也会超时。因此要通过开方等方法降低时间复杂度
  8. 关于日期:Calendar类的一些方法
  9. 如果要开n维的二维数组。那么在读入数据的时候不能只用一重循环。因为一重循环会将跳过的第一列填上数据而最后一列没有数据
  10. 学会把问题转化为数据结构进行解决。比如七段码问题
  11. 读入数据量大的时候使用快读可能会帮助通过  //求和,外卖店优先级等等题目。
  12. 大数BigInteger的操作要重新赋值给他自己。因为不可修改
  13. 开一个ArrayList数组的时候除了需要new ArrayList【n+1】,还要进行for循环给每个ArrayList【i】=new ArrayList(); 同样的开一个大数数组也要为每一个初始化,因为这种是面向对象的
  14. 向其他方向扩张走的时候可以预先设置一个增量xy增量。无论它是否是平面直角坐标系。例如蜂巢问题。六个方向。我们可以自己规定一个坐标系。然后自己规定每个方向xy方向的增量就可以找到点的坐标
  15. 观察题目的时间限制。如果用暴力不能拿全分的情况就要考虑能不能用数学思维
  16. 关于取模,快速幂,求a的b次方模c
  17. 关于gcd

蓝桥杯经验_第1张图片

  1. 关于lcm

蓝桥杯经验_第2张图片

  1. 关于质数,素数筛:筛出1-n中所有的素数,埃氏筛法 欧拉筛(On约为n)
  2. 关于大数定理,即上面17点的算术基本定理
  3. 关于因子(因数,约数)
    1. 一个数的约数包括1和它自身。所以如果用循环到sqrt(n)除了判断是否多加还要判断模完之后的数是不是符合要求
    2. 约数定理,在大数定理的基础上。一个正整数的约数个数等于它的各个素数幂次加一累乘
    3. 质因子分解和埃氏筛类似(从2开始,如果可模就累除。然后对应的质因子++,可以保证后面的一定是质因子。因为再小的在之前已经除过了)
    4. 求n的阶乘的因子k个数,可以循环,sum+=n/k, n/=k;

  1. 关于数据类型的判断。如果n是小于1e6的,但是计算之中可能出现溢出所以必须在定义n的时候就定义成long而不能只在ans接收那里定义。因为已经溢出了
  2. 关于数学公式1^2+2^2+3^2+.....n^2=n(n+1)(2n+1)/6,用立法差公式(a+1)^3-a^3推得,累加法得到
  3. 要考虑特殊情况。比如最大最小公倍数那道题如果n不够3个了。因为题目没有保证N大于3
  4. 二分/前缀和/双指针
  5. 位运算  a&(a-1)将最右边的1置为0
  6. 数组要初始化。不初始化可能有脏数据
  7. 使用bfs确定连通块。要有个for循环。在for循环里面判断如果没有访问过就进行bfs
  8. 开数组的时候要注意空间。不然会发生段错误!
  9. 在剪枝的时候。尤其是for循环判断的时候。要注意是填break还是continue

你可能感兴趣的:(蓝桥杯,算法,职场和发展)