
算法进阶指南
算法进阶指南题目题解
jahup
gitee: https://gitee.com/jahup
展开
-
算法进阶指南-基础算法-总结与练习(5~8)
目录5.防线6.Corral the Cows7.Soliders8. 糖果传递5.防线题目链接import java.util.Scanner;/** * @Auther: jahup * @blog: https://blog.youkuaiyun.com/jahup */public class Main { static way v[] = new way[200010]; static int n; public static void main(String[]原创 2021-03-17 21:09:00 · 138 阅读 · 0 评论 -
算法进阶指南-基础算法-总结与练习(1~4)
目录1.The Pilots Brothers' refrigerator2.占卜DIY3.Fractal4.Raid1.The Pilots Brothers’ refrigerator题目链接import java.util.ArrayList;import java.util.Arrays;import java.util.Scanner;public class Main{ public static void main(String[] args) {原创 2021-03-17 21:01:10 · 247 阅读 · 3 评论 -
算法进阶指南-基本数据结构-Trie
1.前缀统计题目链接题解:对n个字符串建立trie,然后对于每一个询问都由浅到深度变量trie即可,线性的复杂度代码:#include<iostream>using namespace std;const int N=1000010,M=500000;int n,m;int son[M][26],cnt[N],idx;char str[N];void insert()//建立trie{ int p=0; for(int i=0;str[i];i++)原创 2021-02-28 18:06:40 · 163 阅读 · 0 评论 -
算法进阶指南-搜索-树与图的遍历
1.可达性统计题目链接#include <iostream>#include <bitset>#include <algorithm>#include <queue>#include<string.h>using namespace std;const int M = 30000 + 10;int edge[M], ne[M], last[M];int d[M], seq[M]; //入度,拓扑排序的序列int cnt =原创 2021-01-02 12:03:51 · 191 阅读 · 0 评论 -
算法进阶指南-搜索-深度优先搜索
1.小猫爬山题目链接#include<iostream>#include<algorithm>using namespace std;const int N=20;int cat[N],car[N];int n,m;int ans=N;void dfs(int k,int l){ if(l>=ans) return; if(k==n) { ans=l; return; } for(int i=0;i<l;i++) {原创 2021-01-01 14:02:02 · 167 阅读 · 0 评论 -
算法进阶指南-基础算法-贪心
1.Sunscreen题目链接代码:import java.util.Arrays;import java.util.Comparator;import java.util.Scanner;import java.util.HashMap;public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int C =原创 2020-11-27 16:42:26 · 1530 阅读 · 3 评论 -
算法进阶指南-动态规划-区间dp
1.石子合并题目链接题解:对于合并一个长度为2的区间,假设该区间以a沙堆作为起点,我们用dp[a][a+1]来表示它的价值,那么dp[a][a+1]=dp[a][a]+dp[a+1]dp[a][a+1]=dp[a][a]+dp[a+1]dp[a][a+1]=dp[a][a]+dp[a+1][a+1]+value[a]+value[a+1].对于一个区间长度为3的,dp[a][a+2]=min(dp[a][a]+dp[a+1][a+2],dp[a][a+1]+dp[a+2][a+2])+value[a]原创 2020-11-27 16:33:19 · 205 阅读 · 0 评论 -
算法进阶指南-动态规划-背包
1.数字组合题目链接题解:01背包方案数问题,直接套模板java代码:import java.util.ArrayList;import java.util.Arrays;import java.util.HashMap;import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc=new Scanner(System.in);原创 2020-09-05 15:25:29 · 286 阅读 · 0 评论 -
算法进阶指南-基本算法-前缀和与差分
1.激光炸弹题目链接题解:这题的解法有点类似前缀和,如果这题是给你一个线段,线段上每个点都有其对应的价值,有一个炸弹能摧毁长度为n的线段,求能摧毁的最大总价值,那么通过前缀和来做很容易解决,而这题就是把一维的前缀和变成了二维的前缀和,炸弹的爆炸范围是一个正方形,我们只需要知道对角上2个点的位置就能确定这个三角形,所已我们用一个二维数组 f[x][y] 来表示0 0 点和x,y点所确定的矩形包含的价值.那么这题也就转化为了一个前缀和问题.现在的问题是如何处理这个二维数组看如下代码(f[i][j]在处原创 2020-09-02 15:07:44 · 391 阅读 · 0 评论 -
算法进阶指南-基本算法-位运算
1.a^b题目直通车题解:就是快速幂,一模一样(快速幂讲解)java代码:import java.util.Arrays;import java.util.Scanner;public class Main { static long mod; public static void main(String[] args) { Scanner sc=new Scanner(System.in); long a,b; a=原创 2020-08-09 13:54:07 · 466 阅读 · 0 评论