摘要:
题意:给你一个长度为n的数列,首先你可以改变任意一个数(这次不算操作),之后你可以选择如下操作: ①让任意后缀都加上1 ②让任意后缀都减去1 问你至少要进行几次操作,可以让数列所有数相等 思路:首先假如不改变任何数的话,我们的操作数应该是abs(a[i]-a[i-1])的前缀和。如果要改变某个数的话 阅读全文
摘要:
原题 思路:本题题意比较清楚,要找到最小的操作数,我们可以将每次九宫格表示的不同字符串看做一种不同的状态,从一种状态变化到另一种状态,则操作数 +1,问你从起始状态变化到目标状态的最小操作数,那么本题可以看做是求一个各边权值相同的最短路问题,所以用BFS即可。因为我们要记录每种状态是否走过,可将这种 阅读全文
摘要:
"原题" 题意:给你个数N,问你能得到多少种权重不同的分解(权重指将数分解成一个不上升的正整数序列后,序列中等于序列第一个数的个数) 思路:看到题感觉就是规律题,但是开始一直没搞懂输入8为啥出来5,如果能够简单将前几个数模拟一下,就会发现规律 n | ans | | | 1 | 1 2 | 2 3 阅读全文
摘要:
整数二分的模板有很多,但出错大多是因边界判断出现问题,出现死循环。所以记一个统一的模板很重要。 模板有以下两种: 1.mid在左半边 2.mid在右半边 我们如果分析出我们的结果靠近左半边,就用第一个;反之,用第二个,加 1 主要是为了防止死循环。 阅读全文
摘要:
参考资料:《算法竞赛进阶指南》 李煜东 一.什么是二叉堆 如图,简单来说,二叉堆是一棵满足“堆性质”的完全二叉树,树上的每一个节点都带有一个权值。 若树中任意的一个节点的权值都小于等于其父节点的权值,则称满足该性质的 完全二叉树 为 大根堆 (根权值最大)。 若树中任意的一个节点的权值都大于等于其父 阅读全文
摘要:
"原题" 题意:给你若干个起点和终点,让你求最短路 思路:可以取任意一个起点做出发点,其他起点到它的距离为 0 ,然后做一次 Djikstra ,找出合法的最短路就行了 代码: 阅读全文
摘要:
"原题" 题意:给你 6 个数,代表 1~6 的数的数量,问你是否能将这堆数分成两组,使他们各自和相等 思路:首先我们可以对整堆数求和,和为 sum ,如果和是奇数,则肯定不对;如果是偶数的话,就将问题转化成能否从这堆数中取若干数,使他们和为 sum/2 。那该问题其实就又转化为了一个容积为 sum 阅读全文
摘要:
参考《算法竞赛进阶指南》 李煜东 最小生成树定义 :给定一张边带权的无向图 G = (V,E),n = |V|,m = |E|。由V中全部 n 个顶点和 E 中 n 1 条边构成的无向连通子图被称为 G 的一棵生成树。边的权值之和最小的生成树被称为无向图 G 的最小生成树(Minimum Spann 阅读全文