Facebook Hacker Cup 2022 Round 2

Facebook Hacker Cup 2022 Round 2

💡 原文中文,约2800字,阅读约需7分钟。
📝

内容提要

问题A:判断子串是否几乎平衡。通过枚举删除位置或讨论删除哪边的字符来判断。对于字符集任意的情况,将数字映射成随机uint,判断diff是否是某个字符的映射。代码比A1更简单。问题B:dag dp,用multiset记录dp值。问题C:从n袋饼干中任取k个,问最重的一块饼干来自第一袋的概率。问题D:给定序列和修改操作,问每次修改后至少需要多少次swap操作。D1中可以贪心解决。

🎯

关键要点

  • 问题A:判断子串是否几乎平衡,定义为删除一个字符后长度为偶数且前后半段字符出现次数相等。

  • A1中字符集为小写字符,A2中字符集为任意整数。

  • 通过判断长度是否为奇数和枚举删除位置来解决,或讨论从哪边删除并比较diff。

  • 对于任意字符集,将数字映射为随机uint,判断diff是否为某字符的映射,代码比A1更简单。

  • 问题B:将day视为点,client视为边,使用multiset记录dp值。

  • 问题C:从n袋饼干中任取k个,问最重的一块饼干来自第一袋的概率。

  • 问题D:给定序列和修改操作,问每次修改后至少需要多少次swap操作。

  • D1中可以贪心解决,D2中只允许交换相邻位置。

➡️

继续阅读