蓝桥杯备考

数论:判断素数,鸽笼定理,抽屉理论

注意事项:

long类型的数后面要加L
long s = 2658417853L;

保留几位小数:
System.out.printf(“%.2f”, arg);
四舍五入问题:比如保留两位小数,就在数的后面再加0.005再保留小数,就不会有截断不入的情况。

BufferedReader和Scanner不能混用

整数转换成小数:1.0 * jigeSum

String转换成字符串数组:S.toCharArray()

long的范围是19位

Java异或:^

尺取法

应用场景:滑动窗口,[L, R],R随着L增大而增大

记忆化搜索

应用场景:多次查询
多次查询一定要储存

二分查找

应用场景:最小值最大化,最大值最小化
必须有单调性!!

模板题:最终结果取right
三个地方特别容易记混:
1、求mid公式是否+1(这个记因为最小<最大,所以找最小不加,找最大+1)
2、while循环带不带等号(这个自己测试吧实在没想到好的记忆方法)
3、更新high和left哪个+1:这个好理解,哪个满足条件哪个=mid,不满足条件+1
蓝桥杯备考_第1张图片

并查集

1、存储
蓝桥杯备考_第2张图片
2、查询
蓝桥杯备考_第3张图片
路径压缩:(记忆化递归)
蓝桥杯备考_第4张图片
3、集合合并
蓝桥杯备考_第5张图片

蓝桥杯备考_第6张图片

贪心

选择必须无后效性,当前选择不能影响后序选择对结果的影响

注意熟悉结构体排序:

Arrays.sort(goods, (Comparator<Goods>)(Goods x, Goods y) -> {
        	return -Double.compare(x.d, y.d);
        });

快速幂

蓝桥杯备考_第7张图片

最大公约数gcd

辗转相除法
蓝桥杯备考_第8张图片

LCM最小公倍数

在这里插入图片描述

图论

邻接矩阵初始化等于INF的INF取多少合适?
dis[a,b] = dis[a,k] + dis[k,b]
INF = max/2
INF = -1也可以(最好用这个)

邻接矩阵不能存储重边。如果有重边,取最小值

迪杰斯特拉:不能处理负权值
蓝桥杯备考_第9张图片

蓝桥杯备考_第10张图片蓝桥杯备考_第11张图片

Java:
蓝桥杯备考_第12张图片蓝桥杯备考_第13张图片
蓝桥杯备考_第14张图片
蓝桥杯备考_第15张图片蓝桥杯备考_第16张图片

SPFA:
蓝桥杯备考_第17张图片
蓝桥杯备考_第18张图片蓝桥杯备考_第19张图片
Java
蓝桥杯备考_第20张图片蓝桥杯备考_第21张图片蓝桥杯备考_第22张图片

排序

import java.util.*;
import java.io.*;
public class 排序 {
	public static void main(String[] args) {
		Integer[] arr = {23,1,14,56,33,7};
		Comparator cmp = new myCompare();
		Arrays.sort(arr, cmp);
		for(Integer i : arr) {
			System.out.println(i);
		}
	}
	
}
class myCompare implements Comparator<Integer> {
	public int compare(Integer o1, Integer o2) {
		return -Integer.compare(o1, o2);
	}
}
        Map<Long, Integer> map = new TreeMap<>(new Comparator<Long>() {
            @Override
            public int compare(Long o1, Long o2) {
                return (int)(o1 - o2);
            }
        });

蓝桥杯备考_第23张图片

思维题:
蓝桥杯备考_第24张图片

蓝桥杯备考_第25张图片

蓝桥杯备考_第26张图片
蓝桥杯备考_第27张图片

1s可以处理10^8个数据

Java语法

输入

Scanner input=new Scanner(System.in);
String str=input.next(); //String类型
int n=input.nextInt();//int类型

输出

System.out.printf(“%d %d %d %d\n”, a, b, c, d);

注意事项

输出的类型要和它规定的类型保持一致。比如要输出整数,就不能System.out.print(i+“ ”);

如何判断闰年

能被4整除却不能被100整除或能被400整除的年份

蓝桥杯备考_第28张图片蓝桥杯备考_第29张图片
蓝桥杯备考_第30张图片

蓝桥杯备考_第31张图片
蓝桥杯备考_第32张图片
蓝桥杯备考_第33张图片蓝桥杯备考_第34张图片
蓝桥杯备考_第35张图片蓝桥杯备考_第36张图片
蓝桥杯备考_第37张图片蓝桥杯备考_第38张图片蓝桥杯备考_第39张图片蓝桥杯备考_第40张图片蓝桥杯备考_第41张图片

差分:区间左端点+value,区间右端点-value
前缀和和差分是互逆操作

蓝桥杯备考_第42张图片蓝桥杯备考_第43张图片
蓝桥杯备考_第44张图片
蓝桥杯备考_第45张图片蓝桥杯备考_第46张图片

不能单独考前缀和和差分,仅仅是加速算法工具

蓝桥杯备考_第47张图片
蓝桥杯备考_第48张图片

看看组合数问题

蓝桥杯备考_第49张图片
最好用静态数组,定义在main外面
蓝桥杯备考_第50张图片
蓝桥杯备考_第51张图片

蓝桥杯备考_第52张图片
蓝桥杯备考_第53张图片
蓝桥杯备考_第54张图片
蓝桥杯备考_第55张图片
经常遍历用list,经常get用vector
数学公式:半径、面积

蓝桥杯备考_第56张图片
蓝桥杯备考_第57张图片

spfa 弗洛伊德

注意事项

你可能感兴趣的:(蓝桥杯,算法)