12 2020 档案
摘要:原题链接:103. 电影 解题思路 虽然语言的范围在int以内,但是这m部电影与n个人最多涉及 2(m+n) 种语言。我们把所有电影和人涉及的语言放进一个数组,排序并离散化,用一个 1~2(m+n) 之间的整数代替每种语言。此时我们就可以利用数组直接统计会上述每种语言的人的数量,从而选择满足题目要求
阅读全文
摘要:原题链接:113. 特殊排序 解题思路 根据数学归纳法,假设前k-1哥元素之间的大小关系是已经按照要求排成一行,如果可以确定第k个元素应该放在哪一个前面,即可解决问题。 我们可以通过哟这样一种二分法确定第k个元素的位置:若第k个元素比第mid个元素小,令r=mid,否则令l=mid+1。二分的初始区
阅读全文
摘要:原题链接:102. 最佳牛围栏 解题思路 ####本题题意为:给定正整数序列A,求一个平均数最大的、长度不小于L的(连续的)子段。 首先我们可以这样理解,我们要寻找一段数列,这个数列满足,长度不小于L,并且它的子段和非负。也就是我们需要的二分判定。 二分:首先我们的mid=(l+r)/2,记住这里不
阅读全文
摘要:原题链接:101. 最高的牛 解题思路 ####差分+区间处理小操作 这道题目的一个核心要点,就是如何处理这些特殊的关系,也就是两头牛能互相看见。 其实题目中已经告诉我们如何处理,因为我们发现,题目中要求牛的身高最高,那么既然如此,我们完全可以将每一组关系(A,B),看作[A+1,B-1]这组牛身高
阅读全文
摘要:原题链接:100. 增减序列 解题思路 求出 a 的差分序列 b,其中 b1 = a1,bi = ai - ai-1(2 ⇐ i ⇐ n)。令 bn+1 = 0。题目对序列 a 的操作,相当于每次可以选出 b1,b2,...,bn+1 中的任意两个数,一个加一,另一个减一。目标是把 b2,b3,..
阅读全文
摘要:原题链接:Acwing99. 激光炸弹 解题思路 因为Xi,Yi的值在0~5000之间,所以我们可以建立一个二维数组 A,其中 A[i,j] 就等于位置 (i,j) 上的所有目标的价值之和。即对于每个目标,令 A[Xi,Yi]+=Wi。 接下来我们求出 A 的二维前缀和 S,即: ###S[i,j]
阅读全文
摘要:原题链接:98. 分形之城 解题思路 递归+分治+数学坐标系公式+找规律 递归+分治好理解,因为这个题目中最显著的特点就是,不断地重复旋转复制,也就是N级城市,可以由4个N−1级城市构造,因此我们每次可以不断地分形N−1级,将问题范围不断地缩小即可 这道题目的数学坐标公式,其实一共有两个,一个是高中
阅读全文
摘要:原题链接:97. 约数之和 解题思路 根据乘法分配律,AB的所有约数之和为: (1+p1+p12+...+p1BxC1)x(1+p2+p22+...+p2BxC2)x...x(1+pn+pn2+...+pnBxCn) 我们把改式展开,与约数集合比较。 上式中的每个括号内都是等比数列,如果使用等比数列
阅读全文
摘要:原题链接:96. 奇怪的汉诺塔 解题思路: 首先考虑n个盘中3座塔的经典问题,设d[n]表示求解改n盘3塔问题的最少步数,显然有d[n]=2*d[n-1]+1,既把前n-1个盘子从A柱移动到B柱,然后把第n个盘子从A柱移动到C柱,最后把前n-1个盘子从B柱移动到C柱。 回到本题,设f[n]表示求解n
阅读全文
摘要:原题链接:95. 费解的开关 解题思路: 在上述规则的01矩阵的点击游戏中,很容易发现三个性质: 1.每个位置至多被点击一次 2.若固定了第一行(不能再改变第一行),则满足题意的点击方案至多只有一种。 其原因是:当第i行某一位为1时,若前i行已经被固定,只能点击第i+1行该位置上的数字才能使得第i行
阅读全文
摘要:原题链接:94. 递归实现排列型枚举 解题思路: 该问题也称全排列问题,所有可能的方案总数有n!种。在这里,递归需要求解的问题是“把指定的n个整数按照任意次序排列”,在每次递归中,我们尝试把每个可用的数作为数列中的下一个数,求解“把剩余的n-1个整数按照任意次序排列”这个规模更小的子问题 样例代码:
阅读全文
摘要:原题链接:93. 递归实现组合型枚举 解题思路 根据92.递归实现指数型枚举里的思路,我们只需要在上面指数型枚举程序的calc函数开头添加以下这条语句即可: if (chosen.size() > m || chosen.size() + (n - x + 1) < m) { return; } 这
阅读全文
摘要:原题链接:92. 递归实现指数型枚举 解题思路 这等价于每个整数可以选可以不选,所有可能的方案总数有2的n次方种,通过前两节的学习我们已经知道可以进行一次循环,利用位运算来列举所有的选择方案。这一次我们使用递归来求解,在每一次递归中分别尝试某个数“选”还是“不选”两条分支,将尚未确定的整数数量减少1
阅读全文