首页> 热点 > 详情

复盘|第330场周赛_当前独家

2023-01-29 22:00:00来源:哔哩哔哩


(资料图)

统计桌面上的不同数字

【数学】n-1一定满足要求,不断循环后,[2,n]都会在桌子上,答案为n - 1,记得特判n=1的情况。

猴子碰撞的方法数

【数学】正难则反(考虑全集减去对立事件),只有全部顺时针和逆时针这两种情况才不会相撞,所以答案是2^n - 2(每个猴子向左或向右是2^n),要用快速幂计算。为了避免负数需要-2再转换到非负数上。(pow(2, n, MOD)的范围是[0, mod - 1]可能是负数)

将珠子放入背包中

【排序 + 贪心】问题相当于把 weights 划分成 k 个连续子数组,分数等于每个子数组的两端的值之和。weights[0] 和 weights[n−1] 一定在分数中,最大分数和最小分数相减,抵消了。上一个子数组的末尾和下一个子数组的开头一定同时在分数中。把所有n-1个weights[i]+weights[i+1]算出来,排序,那么最大的k-1个数和最小的k-1个数相减,即为答案。

统计上升四元组

【预处理 + 枚举】枚举中间的j和k更容易计算。需要计算在k右侧的比nums[j]大的元素个数,记作great[nums[j]]在j左侧的比nums[]小的元素个数,记作less[j] [nums[k]]。对于固定的j和k,根据乘法原理,对答案的贡献为less[j] [num[s]] [k] · great [k] [nums[j]]。维护方法:倒序遍历nums,设xnums[j-1],对于x,小于它的数的个数加一,即less[j] [x]加一。

标签: 元素个数 对立事件 乘法原理

上一篇:正月初九龙口市举办首场新春现场招聘会
下一篇:世界热议:马健谈NBA漏判:仅从这次武断行为看 CBA裁判更人性化