自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(119)
  • 收藏
  • 关注

原创 最长回文子串的长度与子串(区间DP)

区间DP1、确定状态求s串0~j的最长回文子串假设a~b是一个回文串,那么s的a+1~b-1仍然是最长回文子串子问题:求s[i...j]的最长回文子串如果s[i]==s[j],需要知道s[i+1...j-1]的最长回文子串否则就是s[i+1...j],s[i...j-1]的最长回文子串2、转移方程f[i][j] = f[i+1][j-1] 【s[i] == s[j]】f[i][j] = false 【s[i] != s[j]】i + 1 == j即i,j相邻那么如

2021-05-05 16:12:37 313 1

原创 SpringBoot整合Swagger,访问Swagger-ui.html导致404问题

错误复盘:1、导入jar包<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>3.0.0</version></dependency><dependency> <groupId>io.sprin

2021-02-13 12:31:43 4790 3

转载 Mysql 通过binlog日志恢复数据

Binlog日志,即binary log,是二进制日志文件,有两个作用,一个是增量备份,另一个是主从复制,即主节点维护一个binlog日志文件,从节点从binlog中同步数据,也可以通过binlog日志来恢复数据1,登录mysql查看binlog日志的状态,输入show variables like ‘%log_bin%’;查看binlog为off关闭状态2,开启mysql binlog日志,进入mysql配置文件(vi /etc/my.cnf) 在mysqld区域内添加如下内容,①server-.

2020-11-06 14:15:35 777

原创 list转数组问题:list.toArray()与list.toArrays(T[])

list.toArray()最终是转化为Object[]数组,以正确的顺序(从第一个到最后一个元素)返回一个包含此列表中所有元素的数组。注意list的属性内容不能是基本类型,必须是包装类型或者类类型。list.toArray(T[])最终是转化为T[]泛型数组,比如list存储的是字符串,那么安装第一种方式就可以使用:Object[] strsObj = list.toArray(); 然后遍历strsObj依次强转为String;有了泛型函数则方便很多,String[] strs = li

2020-11-04 10:31:03 1339

原创 leetcode 第203场周赛第三第四题

1562. 查找大小为 M 的最新分组考点:双链表/集合/数组1、双链表解法算法思想:每次当某个位置 i 设置为1后就会出现以下情况①i的左边有1右边无1②i的右边有1左边无1③i的左右两边都有1设定m个1的数组的个数为ans,步骤数为cnt第一种情况先检测i的左边1的个数如果是m则ans-1,则i的的左指针设置为最左边1的下标,再次检测当前更新后1的个数如果是m则ans+1;第二种情况i的的右指针设置为最右边1的下标,则i的的右指针设置为最右边1的下标,再次检测当前更新

2020-09-10 19:18:29 243

原创 leetcode 第205场周赛

1576. 替换所有的问号难度:打卡考点:遍历时间复杂度:O(n)class Solution { //将字符串存入字符数组,注意首尾多开一个设置为0 //然后每次遇到‘?’我们就将其变为与前后都不同的字符即可 public String modifyString(String s) { char[] cha = new char[26]; for(int i = 0; i < 26; ++i){ cha

2020-09-09 14:20:23 222

原创 Leetcode 第34场 双周赛20.9.5 5491/5492/5493/5494

5491. 矩阵对角线元素的和难度:打卡题考点:初学程序人思想:两边对角线累加然后删除相交的值(奇数行删,偶数行不删)class Solution { public int diagonalSum(int[][] mat) { int n = mat.length; int res = 0; for(int i = 0; i < n; ++i){ res += mat[i][i];

2020-09-07 10:50:10 147

原创 AcWing 1010. 拦截导弹(dp与贪心)

dp与贪心解LIS问题1、dp + dpO(n^2)第一问显然每套导弹拦截系统拦截导弹高度为不升子序列,求最长的就好了第二问求导弹拦截系统的个数可以转化为求最长上升子序列长度证明见: Tian-Xing’s blog orz orz1、首先我们把这些导弹分为s组(s即为所求答案)可以看出每一组都是一个不升子序列2、划分完后我们在组一里找一个原序列里以组一的开头点连续的不升子串的最后一个元素,可以知道在组2中一定有一个大与它的点(如果组二中没有的话,那么组二中最高的导弹高度必然小于这..

2020-09-02 13:53:19 282

原创 AcWing 1016. 最大上升子序列和(动态规划线性dp)

算法思想:朴素的做法(n^2)类似于合唱队形的朴素做法可以先预处理从左到右的最大子序列的和f[i]然后遍历f找到最大值。朴素做法可以解决最长与最大的上升子序列的问题,但是贪心加二分只能解决最长上升子序列的问题。import java.util.*;class Main{ static int n = 0, N = 1010, last = 0; static int[] nums = new int[N], f = new int[N]; ..

2020-09-02 12:31:27 251

原创 AcWing 1012. 友好城市(最长上升子序列)

时间复杂度:O(n^2);换成单调栈O(nlogn)算法思想:对一边排序,另一边求最长上升子序列//一岸从小到大排序,另一岸求最长上升子序列import java.util.*;class Main{ static int n = 0, N = 5010; static int[][] nums = new int[N][2]; static int[] max = new int[N]; public static void main(..

2020-08-29 21:28:07 214

原创 AcWing 482. 合唱队形(最长上升子序列 单调栈)

算法思想用登山代码过时间复杂度:O(nlogn)import java.util.*;class Main{ static int n = 0, N = 110; static int[] nums = new int[N]; static int[] left = new int[N], right = new int[N]; static int bs(int[] max, int len, int num){//找到从左到右第一个大于nu...

2020-08-29 19:23:32 224

原创 AcWing 1014. 登山JAVA(最长单调子序列 单调栈)

时间复杂度:O(nlogn)//单调栈问题//分别计算从左向右和从右向左的最长上升子序列,分别存储到两个数组中import java.util.*; class Main{ static int n = 0, N = 1010; static int[] nums = new int[N]; static int[] left = new int[N], right = new int[N]; static int bs(int[] max, int l..

2020-08-29 19:05:56 272

原创 AcWing 1017. 怪盗基德的滑翔翼(最长上升子序列,单调栈)

算法思想单调队列问题分别计算从左向右和从右向左的最长上升子序列,取最大值即可//单调队列问题//分别计算从左向右和从右向左的最长上升子序列,取最大值即可import java.io.*;import java.util.*;class Main{ static int n = 0, N = 110; static int[] nums = new int[N]; static int bs(int[] max, int len, int num...

2020-08-29 17:46:35 283

原创 AcWing 275. 传纸条(数字三角形线性DP)

证明可以使用方格取数的代码:证明首先, 从右下角回传可以等价为从左上角同时传两次。要想两个路径除了起点和终点之外没有交点,那么肯定有一条路径完全位于另一条的上方。现在考虑路径有交点的情况:这种情况其实转换起来很简单,只要把位于红色线段上方的蓝色线段交换颜色就可以了,也就是说当红色处于蓝色的下方的时候,将红色的路径换成从蓝色的那段走是等效的(因为两条路径加起来经过的节点完全没有变)。就可以得到:但是这个时候虽然满足了红色路径完全在蓝色的上方,但是却有交点。但是因为所有节点的...

2020-08-29 14:39:36 238

原创 AcWing 1027. 方格取数(数字三角形线性DP)

算法思想:四维未优化版import java.util.*;class Main{ static int n = 0, N = 15; static int[][] nums = new int[N][N]; static int[][][] max = new int[N + N][N][N]; public static void main(String[] args)throws Exception{ Scanner sc ...

2020-08-29 13:14:02 236

原创 AcWing 1018. 最低通行费(数字三角形线性DP)

样例中,最小值为109=1+2+5+7+9+12+19+21+33。import java.lang.*;import java.util.*;class Main{ static int n = 0, N = 110; static int[][] nums = new int[N][N]; static int[][] min = new int[N][N]; static int getMin(){ for(int i = 1; i &l..

2020-08-28 10:18:18 252

原创 AcWing 1015. 摘花生JAVA(数字三角形模型DP)

类似:leetcode62. 不同路径;63. 不同路径 IIimport java.io.*;import java.lang.*;class Main{ static int n = 0, R = 0, C = 0, N = 110; static int[][] nums = new int[N][N]; static int[][] max = new int[N][N]; static int getMax(){

2020-08-28 09:31:56 269

原创 ACWing算法思考:图论算法(模板)选用!

最短路问题稠密图:Dijkstra算法稀疏图或者负权:Spfa算法有步数限制:Bella-Ford算法

2020-08-27 15:17:47 265

原创 AcWing算法思考:整数(浮点数)二分查找模板分析!

红色的是不一样的地方,其他情况是一样的数组存在指定值时:得到从左到右第一个满足指定值的下标。数组不存在指定值时:得到从左到右第一个大于指定值的下标。不存在大于指定值的时候(即都比指定值小),得到数组结尾下标。不存在小于指定值的时候(即都比指定值大),得到数组开始下标。代码模板: static int BinerySearch(int[] nums, int l, int r, int k){ if(l > r)return;

2020-08-25 17:34:35 272

原创 AcWing 4. 多重背包问题(DP)

有NN种物品和一个容量是VV的背包。第ii种物品最多有sisi件,每件体积是vivi,价值是wiwi。求解将哪些物品装入背包,可使物品体积总和不超过背包容量,且价值总和最大。输出最大价值。输入格式第一行两个整数,N,VN,V,用空格隔开,分别表示物品种数和背包容积。接下来有NN行,每行三个整数vi,wi,sivi,wi,si,用空格隔开,分别表示第ii种物品的体积、价值和数量。输出格式输出一个整数,表示最大价值。数据范围0<N,V≤1...

2020-08-24 17:56:15 167

原创 AcWing 837. 连通块中点的数量(并查集)

给定一个包含n个点(编号为1~n)的无向图,初始时图中没有边。现在要进行m个操作,操作共有三种:“C a b”,在点a和点b之间连一条边,a和b可能相等; “Q1 a b”,询问点a和点b是否在同一个连通块中,a和b可能相等; “Q2 a”,询问点a所在连通块中点的数量;输入格式第一行输入整数n和m。接下来m行,每行包含一个操作指令,指令为“C a b”,“Q1 a b”或“Q2 a”中的一种。输出格式对于每个询问指令”Q1 a b”,如果a和b在同一个连通块中,则输出“Yes

2020-08-24 17:48:47 207

原创 AcWing 801. 二进制中1的个数(位运算)

给定一个长度为n的数列,请你求出数列中每个数的二进制表示中1的个数。输入格式第一行包含整数n。第二行包含n个整数,表示整个数列。输出格式共一行,包含n个整数,其中的第 i 个数表示数列中的第 i 个数的二进制表示中1的个数。数据范围1≤n≤1000001≤n≤100000,0≤数列中元素的值≤1090≤数列中元素的值≤109输入样例:51 2 3 4 5输出样例:1 1 2 1 2import java.io.*;import java.lang

2020-08-24 17:46:45 424 1

原创 AcWing 800. 数组元素的目标和(双指针算法)

给定两个升序排序的有序数组A和B,以及一个目标值x。数组下标从0开始。请你求出满足A[i] + B[j] = x的数对(i, j)。数据保证有唯一解。输入格式第一行包含三个整数n,m,x,分别表示A的长度,B的长度以及目标值x。第二行包含n个整数,表示数组A。第三行包含m个整数,表示数组B。输出格式共一行,包含两个整数 i 和 j。数据范围数组长度不超过100000。同一数组内元素各不相同。1≤数组元素≤1091≤数组元素≤109输入样例:4 5 61

2020-08-24 17:45:59 231

原创 AcWing 799. 最长连续不重复子序列(双指针算法)

给定一个长度为n的整数序列,请找出最长的不包含重复数字的连续区间,输出它的长度。输入格式第一行包含整数n。第二行包含n个整数(均在0~100000范围内),表示整数序列。输出格式共一行,包含一个整数,表示最长的不包含重复数字的连续子序列的长度。数据范围1≤n≤1000001≤n≤100000输入样例:51 2 2 3 5输出样例:3import java.io.*;import java.lang.*;import java.util.*;cl

2020-08-24 17:44:03 296

原创 AcWing 125. 耍杂技的牛(贪心)

农民约翰的N头奶牛(编号为1..N)计划逃跑并加入马戏团,为此它们决定练习表演杂技。奶牛们不是非常有创意,只提出了一个杂技表演:叠罗汉,表演时,奶牛们站在彼此的身上,形成一个高高的垂直堆叠。奶牛们正在试图找到自己在这个堆叠中应该所处的位置顺序。这N头奶牛中的每一头都有着自己的重量WiWi以及自己的强壮程度SiSi。一头牛支撑不住的可能性取决于它头上所有牛的总重量(不包括它自己)减去它的身体强壮程度的值,现在称该数值为风险值,风险值越大,这只牛撑不住的可能性越高。您的任务是确定奶牛的排

2020-08-24 16:46:05 215

原创 AcWing 104. 货仓选址(贪心+前后缀和)

在一条数轴上有N家商店,它们的坐标分别为A1~AN。现在需要在数轴上建立一家货仓,每天清晨,从货仓到每家商店都要运送一车商品。为了提高效率,求把货仓建在何处,可以使得货仓到每家商店的距离之和最小。输入格式第一行输入整数N。第二行N个整数A1~AN。输出格式输出一个整数,表示距离之和的最小值。数据范围1≤N≤100000输入样例:46 2 9 1输出样例:12算法思想维护前缀和和后缀和,然后减去左边选中数字乘上左边个数减去左前缀和,右边前...

2020-08-24 11:14:27 298

原创 AcWing 913. 排队打水(贪心)

有n个人排队到 1 个水龙头处打水,第i个人装满水桶所需的时间是ti,请问如何安排他们的打水顺序才能使所有人的等待时间之和最小?输入格式第一行包含整数n。第二行包含nn个整数,其中第ii个整数表示第ii个人装满水桶所花费的时间titi。输出格式输出一个整数,表示最小的等待时间之和。数据范围1≤n≤10^5,1≤ti≤10^4输入样例:73 6 1 4 2 5 7输出样例:56算法思想:从小到大排序 然后将打水的时间乘上等...

2020-08-24 10:23:01 364

原创 AcWing 148. 合并果子(贪心:哈夫曼树)

在一个果园里,达达已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。达达决定把所有的果子合成一堆。每一次合并,达达可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和。可以看出,所有的果子经过n-1次合并之后,就只剩下一堆了。达达在合并果子时总共消耗的体力等于每次合并所耗体力之和。因为还要花大力气把这些果子搬回家,所以达达在合并果子时要尽可能地节省体力。假定每个果子重量都为1,并且已知果子的种类数和每种果子的数目,你的任务是设计出合并的次序方案,使达达耗费的体力最少

2020-08-23 17:24:51 323

原创 AcWing 907. 区间覆盖(区间贪心)

给定N个闭区间[ai,biai,bi]以及一个线段区间[s,ts,t],请你选择尽量少的区间,将指定线段区间完全覆盖。输出最少区间数,如果无法完全覆盖则输出-1。输入格式第一行包含两个整数s和t,表示给定线段区间的两个端点。第二行包含整数N,表示给定区间数。接下来N行,每行包含两个整数ai,biai,bi,表示一个区间的两个端点。输出格式输出一个整数,表示所需最少区间数。如果无解,则输出-1。数据范围1≤N≤1051≤N≤105,−109≤ai≤bi≤109−109

2020-08-23 17:13:51 341

原创 AcWing 906. 区间分组

给定N个闭区间[ai,bi],请你将这些区间分成若干组,使得每组内部的区间两两之间(包括端点)没有交集,并使得组数尽可能小。输出最小组数。输入格式第一行包含整数N,表示区间数。接下来N行,每行包含两个整数ai,bi,表示一个区间的两个端点。输出格式输出一个整数,表示最小组数。数据范围1≤N≤10^5,−109≤ai≤bi≤10^9输入样例:3-1 12 43 5输出样例:2算法思想:维护每组的最大右端点,新来的右端点与每组比大小,打了更新

2020-08-23 11:45:53 211

原创 AcWing 908. 最大不相交区间数量(贪心:同区间选点)

给定N个闭区间[ai,bi],请你在数轴上选择若干区间,使得选中的区间之间互不相交(包括端点)。输出可选取区间的最大数量。输入格式第一行包含整数N,表示区间数。接下来N行,每行包含两个整数ai,biai,bi,表示一个区间的两个端点。输出格式输出一个整数,表示可选取区间的最大数量。数据范围1≤N≤10^5,−10^9≤ai≤bi≤10^9输入样例:3-1 12 43 5输出样例:2import java.io.*;import java.l

2020-08-23 10:05:19 288

原创 AcWing 905. 区间选点(贪心:区合合并的变形)

给定N个闭区间[ai,bi],请你在数轴上选择尽量少的点,使得每个区间内至少包含一个选出的点。输出选择的点的最小数量。位于区间端点上的点也算作区间内。输入格式第一行包含整数N,表示区间数。接下来N行,每行包含两个整数ai,bi,表示一个区间的两个端点。输出格式输出一个整数,表示所需的点的最小数量。数据范围1≤N≤10^5,−10^9≤ai≤bi≤10^9输入样例:3-1 12 43 5输出样例:2//类似于区间合并问题,不过区间合并是最

2020-08-23 09:45:53 262

原创 AcWing 901. 滑雪 (搜索优化为dp)

给定一个R行C列的矩阵,表示一个矩形网格滑雪场。矩阵中第 i 行第 j 列的点表示滑雪场的第 i 行第 j 列区域的高度。一个人从滑雪场中的某个区域内出发,每次可以向上下左右任意一个方向滑动一个单位距离。当然,一个人能够滑动到某相邻区域的前提是该区域的高度低于自己目前所在区域的高度。下面给出一个矩阵作为例子: 1 2 3 4 516 17 18 19 615 24 25 20 714 23 22 21 813 12 11 10 9在给定矩阵中,一条可行的滑行

2020-08-22 21:08:56 172

原创 AcWing 285. 没有上司的舞会(树形DP)

此题类似于打家劫舍的树形问题:打家劫舍 IIIUral大学有N名职员,编号为1~N。他们的关系就像一棵以校长为根的树,父节点就是子节点的直接上司。每个职员有一个快乐指数,用整数HiHi给出,其中1≤i≤N1≤i≤N。现在要召开一场周年庆宴会,不过,没有职员愿意和直接上司一起参会。在满足这个条件的前提下,主办方希望邀请一部分职员参会,使得所有参会职员的快乐指数总和最大,求这个最大值。输入格式第一行一个整数N。接下来N行,第 i 行表示 i 号职员的快乐指数HiHi。接...

2020-08-22 18:04:08 176

原创 AcWing 91. 最短Hamilton路径(状态压缩DP)

给定一张nn个点的带权无向图,点从 0~n-1 标号,求起点 0 到终点 n-1 的最短Hamilton路径。 Hamilton路径的定义是从 0 到 n-1 不重不漏地经过每个点恰好一次。输入格式第一行输入整数nn。接下来nn行每行nn个整数,其中第ii行第jj个整数表示点ii到jj的距离(记为a[i,j])。对于任意的x,y,zx,y,z,数据保证 a[x,x]=0,a[x,y]=a[y,x] 并且 a[x,y]+a[y,z]>=a[x,z]。输出格式输出一个整数...

2020-08-22 15:44:41 280

原创 AcWing 240. 食物链(并查集)

动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形。A吃B, B吃C,C吃A。现有N个动物,以1-N编号。每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种。有人用两种说法对这N个动物所构成的食物链关系进行描述:第一种说法是”1 X Y”,表示X和Y是同类。第二种说法是”2 X Y”,表示X吃Y。此人对N个动物,用上述两种说法,一句接一句地说出K句话,这K句话有的是真的,有的是假的。当一句话满足下列三条之一时,这句话就是假话,否则就是真话。1)

2020-08-22 12:02:46 146

原创 AcWing 282. 石子合并(区间DP)

设有N堆石子排成一排,其编号为1,2,3,…,N。每堆石子有一定的质量,可以用一个整数来描述,现在要将这N堆石子合并成为一堆。每次只能合并相邻的两堆,合并的代价为这两堆石子的质量之和,合并后与这两堆石子相邻的石子将和新堆相邻,合并时由于选择的顺序不同,合并的总代价也不相同。例如有4堆石子分别为 1 3 5 2, 我们可以先合并1、2堆,代价为4,得到4 5 2, 又合并 1,2堆,代价为9,得到9 2 ,再合并得到11,总代价为4+9+11=24;如果第二步是先合并2,3堆,则代价为7...

2020-08-21 19:34:27 228

原创 AcWing 899. 编辑距离(线性DP)

注:AcWing 902 最短编辑距离的基础 基础上加一个循环给定n个长度不超过10的字符串以及m次询问,每次询问给出一个字符串和一个操作次数上限。对于每次询问,请你求出给定的n个字符串中有多少个字符串可以在上限操作次数内经过操作变成询问给出的字符串。每个对字符串进行的单个字符的插入、删除或替换算作一次操作。输入格式第一行包含两个整数n和m。接下来n行,每行包含一个字符串,表示给定的字符串。再接下来m行,每行包含一个字符串和一个整数,表示一次询问。字符串中只包含小写字母,..

2020-08-20 16:42:46 191

原创 AcWing 902. 最短编辑距离(线性DP)

给定两个字符串A和B,现在要将A经过若干操作变为B,可进行的操作有:删除–将字符串A中的某个字符删除。 插入–在字符串A的某个位置插入某个字符。 替换–将字符串A中的某个字符替换为另一个字符。现在请你求出,将A变为B至少需要进行多少次操作。输入格式第一行包含整数n,表示字符串A的长度。第二行包含一个长度为n的字符串A。第三行包含整数m,表示字符串B的长度。第四行包含一个长度为m的字符串B。字符串中均只包含大写字母。输出格式输出一个整数,表示最少操作次数。数据范围

2020-08-20 16:40:31 310

原创 AcWing 897. 最长公共子序列(线性DP)

给定两个长度分别为N和M的字符串A和B,求既是A的子序列又是B的子序列的字符串长度最长是多少。输入格式第一行包含两个整数N和M。第二行包含一个长度为N的字符串,表示字符串A。第三行包含一个长度为M的字符串,表示字符串B。字符串均由小写字母构成。输出格式输出一个整数,表示最大长度。数据范围1≤N,M≤10001≤N,M≤1000输入样例:4 5acbdabedc输出样例:3import java.io.*;import java.la

2020-08-16 21:01:21 283

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除