难搞的算法都给我退!退!退!
输入篇
小数据都可以用 Scanner sc = new Scanner(System.in);
但是大数据的时候经常会出现内存超限,所以要用BufferedReader,其他的该怎么写就怎么写。
public static void main(String[] args) throws IOException{
BufferedReader sc = new BufferedReader(new InputStreamReader(System.in));
String str = sc.readLine();
String[] vars = str.trim().split(" ");
int n = Integer.parseInt(vars[0]);
int m = Integer.parseInt(vars[1]);
}
排序篇
我最近常用的几种题目中用到的排序。
小根堆,即最小的元素在根结点
//系统自带小根堆,可以直接将输入的数据进行排序
PriorityQueue<Integer> heap = new PriorityQueue<>();
int a = 0;
//添加
heap.add(a);
//取出
int h0 = heap.poll();
//大根堆
PriorityQueue<Integer> maxHeap = new PriorityQueue<>(k,(a,b) -> b-a);
map按照Value从大到小,若Value相同,再按照Key从小到大
Map<Integer,Integer> map = new HashMap<Integer,Integer>();
// map按照Value从大到小,若Value相同,再按照Key从小到大
ArrayList<Map.Entry<Integer,Integer>> arrayList = new
ArrayList<Map.Entry<Integ