摘要: 题意:给你一个长度为n的数列,首先你可以改变任意一个数(这次不算操作),之后你可以选择如下操作: ①让任意后缀都加上1 ②让任意后缀都减去1 问你至少要进行几次操作,可以让数列所有数相等 思路:首先假如不改变任何数的话,我们的操作数应该是abs(a[i]-a[i-1])的前缀和。如果要改变某个数的话 阅读全文
posted @ 2020-12-10 17:38 Pecoz 阅读(105) 评论(0) 推荐(0) 编辑
摘要: 原题 思路:本题题意比较清楚,要找到最小的操作数,我们可以将每次九宫格表示的不同字符串看做一种不同的状态,从一种状态变化到另一种状态,则操作数 +1,问你从起始状态变化到目标状态的最小操作数,那么本题可以看做是求一个各边权值相同的最短路问题,所以用BFS即可。因为我们要记录每种状态是否走过,可将这种 阅读全文
posted @ 2020-09-25 21:18 Pecoz 阅读(154) 评论(0) 推荐(0) 编辑
摘要: "原题" 题意:给你个数N,问你能得到多少种权重不同的分解(权重指将数分解成一个不上升的正整数序列后,序列中等于序列第一个数的个数) 思路:看到题感觉就是规律题,但是开始一直没搞懂输入8为啥出来5,如果能够简单将前几个数模拟一下,就会发现规律 n | ans | | | 1 | 1 2 | 2 3 阅读全文
posted @ 2020-04-10 23:31 Pecoz 阅读(175) 评论(0) 推荐(0) 编辑
摘要: 整数二分的模板有很多,但出错大多是因边界判断出现问题,出现死循环。所以记一个统一的模板很重要。 模板有以下两种: 1.mid在左半边 2.mid在右半边 我们如果分析出我们的结果靠近左半边,就用第一个;反之,用第二个,加 1 主要是为了防止死循环。 阅读全文
posted @ 2020-04-05 15:20 Pecoz 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 参考资料:《算法竞赛进阶指南》 李煜东 一.什么是二叉堆 如图,简单来说,二叉堆是一棵满足“堆性质”的完全二叉树,树上的每一个节点都带有一个权值。 若树中任意的一个节点的权值都小于等于其父节点的权值,则称满足该性质的 完全二叉树 为 大根堆 (根权值最大)。 若树中任意的一个节点的权值都大于等于其父 阅读全文
posted @ 2020-04-03 01:51 Pecoz 阅读(879) 评论(0) 推荐(0) 编辑
摘要: "原题" 题意:给你若干个起点和终点,让你求最短路 思路:可以取任意一个起点做出发点,其他起点到它的距离为 0 ,然后做一次 Djikstra ,找出合法的最短路就行了 代码: 阅读全文
posted @ 2020-04-02 20:07 Pecoz 阅读(190) 评论(0) 推荐(0) 编辑
摘要: "原题" 题意:给你 6 个数,代表 1~6 的数的数量,问你是否能将这堆数分成两组,使他们各自和相等 思路:首先我们可以对整堆数求和,和为 sum ,如果和是奇数,则肯定不对;如果是偶数的话,就将问题转化成能否从这堆数中取若干数,使他们和为 sum/2 。那该问题其实就又转化为了一个容积为 sum 阅读全文
posted @ 2020-04-02 18:30 Pecoz 阅读(137) 评论(0) 推荐(0) 编辑
摘要: 参考《算法竞赛进阶指南》 李煜东 最小生成树定义 :给定一张边带权的无向图 G = (V,E),n = |V|,m = |E|。由V中全部 n 个顶点和 E 中 n 1 条边构成的无向连通子图被称为 G 的一棵生成树。边的权值之和最小的生成树被称为无向图 G 的最小生成树(Minimum Spann 阅读全文
posted @ 2020-04-02 16:52 Pecoz 阅读(148) 评论(0) 推荐(0) 编辑
摘要: "原题" 暴露太多问题了,DP也不会... 题意:给你一个由大小写字母组成的字符串,你每次可以将大小写修改,问你最少几次修改,可以使这个字符串前缀是大写,后缀是小写 首先我们定义一个数组 dp1[N],它代表从前往后遍历,结尾为 a[i]的字符串最小修改次数; 后我们再定义一个数组 dp2[N],它 阅读全文
posted @ 2020-03-31 16:32 Pecoz 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 比赛时对这种线段树裸题都不够敏感,还是题做的太少了啊 因为前面有道题和这题内存限制一样爆内存了,这题一看数据也以为会爆,其实还是没认真去想,因为 n 次询问的范围很小,所以最多也就用 n 行,并不会爆内存 不过赛后自己不看题解也还是不会啊 "原题" 阅读全文
posted @ 2020-03-31 16:12 Pecoz 阅读(91) 评论(0) 推荐(0) 编辑