
分治算法
sigd
这个作者很懒,什么都没留下…
展开
-
二维表第k大数-拼多多2020校招
分析:第k大不好处理,第k小有一定规律。第k大就是第n*m-k+1小。二分法找寻满足条件的最小值。mid条件就是至少有k个数小于等于mid。为什么是至少有k个(而不是正好k个?),因为二维表中有相同元素,例如。其中12既是第14小,也是第15小。如果求第14小时,我们计算得到小于等于12的数字有15个,而小于等于11的数字只有13个,所以12能满足条件。注意此题目必须开longlong。原创 2023-04-22 18:14:11 · 170 阅读 · 0 评论 -
小红的字符串切分-腾讯音乐娱乐集团2023暑期实习生招聘
分割成k份的最大权值。那么可以考虑将前i-1个字符分割成k-1份,而[i,n]为最后一份。小红拿到了一个字符串,她准备将该字符串切分成k个子串(将这k个子串按顺序拼在一起即可得到原串)。小红定义一个字符串的权值为:字符串长度乘以字符串的字母种类数量。分析:序列分割成k份,求极值。思路很简单,dp[n][k]表示将长度n字符串(你不需要给出一个方案,只需要返回最终这k个子串的最大权值即可。k为不超过字符串长度的正整数。逆向思维是算法领域常见的解决方法(上述的动态规划也是逆向思维)。原创 2023-04-19 09:16:39 · 1118 阅读 · 0 评论 -
18725 宇宙迁跃(二分算法)
二分算法是分治算法的一种,注意分治算法有很多子类,比如:折半查找、二分算法,三分算法、分形问题等,第八章的很多排序算法也属于分治算法。二分算法是把问题"解空间"一分为二的算法。它要求答案可以通过枚举的方式解决,同时解空间具有单调性,比如本题目飞船的跳跃能力,如果X能力可以成功,那么X+1、X+2......都可以成功,这就是单调性。解题方法是先设定解空间的范围,比如本题目飞船的能力区间可以设定为[0,a[n]],显然飞船如果具备一次跳到终点a[n]的能力,那么它一定能完成任务。算法模板:定义当..原创 2022-04-25 22:59:11 · 449 阅读 · 0 评论 -
18730 涂色问题 (快速幂的两种写法)
解题思路:组合计算的逆向思维法,发疯方案数F=总方案数S-不发疯方案数N。不发疯方案数计算:第一间牛舍有m选择,第二间有m-1选择,同样第三间有m-1选择 , 总方案数,因此 需要注意的是题目中的n很大,求一个数的n次幂,当n很大时用循环求取会超时,需采用快速幂算法。快速幂是一种典型的分治算法。当我们要求时,可以先求出,那么,同样的道理求取x时,可以先求,再做平方。特别注意,当n为奇数时,递归快速幂模板:long long ksm(ll n,ll m)/**< 求n的m次幂,注意..原创 2022-04-22 09:29:58 · 419 阅读 · 0 评论 -
CF ECR126 C. Water the Trees
Problem - C - Codeforces题目大意:一个数组通过加法操作,让所有数字都相同。奇数天+1,偶数天+2,问最少多少天能达到墓地。解题思路:由于只能添加1,2,1,2,1,2,1......这样的次序。对于6 6 6 6 7 6 6 6 6这样的序列,最终都变成8比变成7会更好。因此,让所有数字都和最大数字相同或者是和最大数字+1相同。那么如何计算天数呢,容易想到的是差值除3,但是稍一思考就知道除3的余数很难处理。对于极值问题另一个思路是二分算法,枚举答案的天数X得到 X-...原创 2022-04-10 16:10:40 · 1003 阅读 · 0 评论