欢迎光临散文网 会员登陆 & 注册

复盘|第83场双周赛

2022-12-26 20:30 作者:UCLmsc  | 我要投稿

最好的扑克手牌

【模拟】

全 0 子数组的数目

【遍历】考虑每个以0结尾的子数组的个数。统计连续0组成的长度c,每个c可以贡献c个子数组。

设计数字容器系统

【有序集合】 整体思路:双向映射, i2n → {idx: number}; n2i → {number: idx}

【懒删除堆】对于change操作,直接往ms中记录,不做任何删除操作;对于find操作,查看堆顶下标对应的元素是否和numbe相同,若不相同则意味着对应的元素已被替换成了其他值,堆顶存的是个垃圾数据,直接弹出堆顶;否则堆顶就是答案。

不可能得到的最短骰子序列

【哈希集合】数组中长度为m的序列都能找到的前提是,数组中存在一个前缀,该前缀中长度为m-1的序列都能找到,且在该前缀之后的子数组中所有的点数均出现过至少一次。

【贪心】考虑包含1到k的最短前缀,无法得到的子序列的第一个数必然在里面。这个前缀的最后一个数x,在前缀中只会出现一次。我们可以取x当做子序列的第一个数。去掉这个前缀,考虑下一个包含1到k的最短前缀。子序列的第二个数必然在这个前缀中。同样地,取前缀最后一个数当做子序列的第二个数。不断重复这一过程,直到剩余部分无法包含1到k时停止。设取到了m个数,对应着rolls的m个子段。由于每一段都包含1到k,rols必然包含长度为m的子序列:每一段都选一个元素即可组成这样的子序列。因此答案至少为m+1。可以构造出一个长为m+1的子序列,它不在rolls中:前m个数分别取各个子段的最后一个数,第m+1个数取不在剩余部分中的数。因此答案等于m+1。


复盘|第83场双周赛的评论 (共 条)

分享到微博请遵守国家法律