基础算法模板题
文章平均质量分 76
JohnnyLin00
持续输出学习 持续发光 共同进步!
展开
-
专题(四)枚举、模拟与排序
特别数的和【题目描述】AcWing 1245. 特别数的和【思路】位数分解import java.util.Scanner;public class Main{ public static boolean check(int x){ //分解位数 while(x > 0){ int t = x % 10; //判断是否满足条件 if( t == 2|| t == 0|| t == 1原创 2021-06-11 15:47:12 · 74 阅读 · 0 评论 -
基础算法模板 (十) —— 常用数据结构
TrieTrie 是一种用来高效地存储和查找字符串(通常还有01串、数字、全是大(小)写字符串)集合的数据结构。存储形式:Acwing 835. Trie字符串统计【题目描述】835. Trie字符串统计 【思路】使用trie数据结构存储并查询import java.util.Scanner;public class Main{ static int M = 100010; //总结点数 static int son[][] = new int [M][26]原创 2021-05-11 12:07:47 · 214 阅读 · 0 评论 -
基础算法模板目录汇总(很全!!)
快速排序public static void quick_sort(int l, int r, int [] b){ if(l >= r )return; int i = l - 1, j = r + 1, x = b[l]; while( i < j){ do{ ++i; }while(b[i] < x); do{ --j; }while(b[j] > x); if(i &原创 2021-04-05 21:59:40 · 1185 阅读 · 2 评论 -
基础算法模板 (九) —— 动态规划
线性dpAcWing 898. 数字三角形【题目描述】AcWing 898. 数字三角形【思路】for(i 从n - 2到 0)for(j 从0到i)f[i][j] = max(f[i + 1][j],f[i + 1][j + 1]) +f[i][j]import java.util.Scanner;import java.lang.Math;class Main{ static int N = 510; static int f[][] = new int[N][N原创 2021-03-26 11:27:09 · 689 阅读 · 1 评论 -
基础算法模板(八)—— 贪心
区间问题AcWing 905. 区间选点【题目描述】AcWing 905. 区间选点类似题目AcWing 112. 雷达设备【思路】每一个区间就是一条线段,将区间按终点从小到大排序。当该线段与上一条线段没有重合的地方即要加入新的点。import java.util.Scanner;import java.util.Arrays;class Node implements Comparable<Node>{ int a, b; public Node(in原创 2021-03-18 13:33:36 · 209 阅读 · 0 评论 -
基础算法模板题(七)—— 图论(部分)
图的存储无向图是一种特殊的有向图,即双向无向图的存储 static int N = 100010, M = 2 * N, idx; static int h[] = new int[N]; static int e[] = new int[M]; static int ne[] = new int[M]; public static void add(int a, int b){ e[idx] = b; ne[idx]原创 2021-03-16 15:03:21 · 199 阅读 · 1 评论 -
基础算法模板(六) —— BFS
AcWing 844. 走迷宫【题目描述】AcWing 844. 走迷宫【思路】BFS模板直接套import java.util.Scanner;import java.util.LinkedList;import java.util.Queue;class Node{ int x, y, step; public Node(int xx, int yy, int tt){ x = xx; y = yy; step = tt;原创 2021-03-16 11:01:01 · 174 阅读 · 0 评论 -
基础算法模板题(五)—— DFS
DFSAcWing 842. 排列数字AcWing 842. 排列数字【题目描述】AcWing 842. 排列数字 【思路】DFS中的经典例题dfs(int m, String res)res记录遍历的一条路径,到达叶子结点时也就是m == n是,就是一个排列。vis标记数组标记该条路径中1 ~ n用过的数字,因为每一个数字只能使用一次。要注意现场的恢复。因为第一次完成深搜后,所有元素都已经被访问过了。如果没有进行恢复现场这样在回溯到上一层时,上层的现场中的状态都被下层更改了,数据就会乱原创 2021-03-15 14:04:03 · 308 阅读 · 0 评论 -
基础算法模板(三)—— 差分和前缀和
一维前缀和AcWing 795. 前缀和【题目描述】AcWing 795. 前缀和 【思路】一维前缀和S[i] = a[1] + a[2] + … a[i]a[l] + … + a[r] = S[r] - S[l - 1] = S[r]-S[l]+a[l]import java.io.*;public class Main{ public static void main(String args[]) throws Exception{ Bu原创 2021-03-14 14:44:21 · 165 阅读 · 0 评论 -
基础算法模板题(二)—— 二分
数的范围【题目描述】AcWing 789. 数的范围【思路】二分import java.io.*;public class Main{ static int N = 100010; static int a [] = new int[N]; static int n, q; /** * */ public static void query(int l, int r, int k, int a[]){原创 2021-03-14 14:30:55 · 145 阅读 · 1 评论 -
基础算法模板题(一)—— 排序
排序快速排序第k个数归并排序逆序对的数量快速排序【题目描述】AcWing 785. 快速排序 【思路】确定分界点x,x可取 x[l],x[r]或者x[(l+r)/2]根据分界点调整区间,以分界点为轴,左边的都不大于x,右边的都不小于x。递归处理模板 public static void quick_sort(int l, int r, int q[]){ //区间为空时返回 if( l > r) return; int j =原创 2021-03-14 14:20:06 · 185 阅读 · 2 评论 -
基础算法模板题(四)——双指针
最长连续不重复子序列【题目描述】AcWing 799. 最长连续不重复子序列 【思路】import java.io.*;import java.lang.Math;class Main{ static int N = 100010; public static void main(String args[]) throws Exception{ BufferedReader bf= new BufferedReader(new InputStreamReader原创 2021-03-14 14:08:27 · 201 阅读 · 0 评论