2024牛客寒假算法基础集训营1

D. 数组成鸡

image-20240208170306191

题解

观察到 abs(M)1e9,容易知道如果绝对值不为 1 的数的个数大于 30 个的话,显然溢出,不会在答案的范围内

再仔细分析性质,如果整个数组中数的种类超过了 20 种,那么除了 0 之外,最坏的结果就是 10,9...1,1,2,...10 这样的情况,他们的乘积为 (10!)2>1e9,所以显然如果种类数超过 20 我们可以不用管了

对于种类数小于 20 的情况,我们考虑暴力跑出所有可行的答案放在 set 中,然后 O(1) 回答查询

那么究竟怎么暴力?我们分两种操作,第一种先将原数组升序排列,然后通过操作使得最小值为 0,因为数组中不允许存在两个元素以上的值 >1e9,所以暴力 [4e4,4e4] 枚举偏移量,然后直接暴力 O(n) 去累乘,然后判断合法性,因为很容易超过 1e9 所以实际上很难跑满 O(n),这样就枚举出了答案的上界

第二种操作先将原数组降序排列,然后通过操作使得最大值为 0,后面的操作和第一种一样,这样就枚举出了答案的下界

F. 鸡数题!

image-20240208173034039

题解:第二类斯特林数

条件 3:说明二进制上一共只有 n1

条件 4:说明每个 1 只能分给 1 个数

条件 1:每个数至少有 11

条件 2:分完后保证有序

发现其本质就是 n 个不同的小球放入 m 个相同的盒子中,要求盒子非空,求方案数

只是最后分完之后将盒子按照大小排序而已,所以方案数没有改变

这显然是第二类斯特林数

H. 01背包,但是bit

image-20240208173501459

题解:按位枚举

假设 m 的第 x 位为 1,则如果所选物品的重量或的和在第 x 位为 0,那么比 x 低的位我们可以随便取 01,没有关系,比x 的高的位必须是 m 的子集,那么我们可以尽可能贪心的选,一直逼近 m

所以我们只要枚举 m 二进制中所有 1 的位,然后按照上面的步骤统计出答案后取 max 即可

最后别忘了对 m 本身统计答案,只要 w[i]m 的子集,就可以拿

I. It's bertrand paradox. Again!

image-20240208174244346

题解:期望 / 统计量的选定和参数估计

可以观察到第一个人生成的数据中 x,y 分布的更加均匀

所以我们定义随机变量 X 为点到圆心距离的平方,易得每个点被选到的概率为 1199×199,所以得到 E(X)=1199×199x2+y2

我们得到了 1e5 个样本,由于样本均值是无偏估计,所以我们可以大约使用样本均值来代替期望,所以我们只要求出 X 的样本均值后与 EX 比较即可,误差较小的就是第一个人

J. 又鸟之亦心

image-20240208175037430

题解:二分答案

考虑 check,假设检查的答案为 mid,一个显然的性质,当处于第 i 个任务的时候,一定有一个人在 a[i] 位置上,所以我们通过 set 维护另一个人可能在的位置,如果另一个人没有位置,说明答案不合法

复杂度:O(nlog2n)

K. 牛镇公务员考试

image-20240208175419138

题解:基环树 + 拓扑排序求环

容易发现对于一条链来说,只要其中任意一个题目的答案确定了,那么这条链上所有题目的答案就确定了

所以对于一个环来说,容易产生矛盾

然后我们将题目抽象为给定 n 个点和 n 个有向边的可能不连通的图,由于每个点都有一个出边,所以每个连通块一定是一颗基环树,也就是说每个连通块中一个有且只有一个环,我们只要把所有的环找出来,不在环上的一定不影响答案,然后在环上任意找一个起点,跑 5 次,数一下没有产生冲突的次数

那么答案就是所有环上没有冲突次数的乘积

然后问题就转化为求环,然后在环上检查合法性了

posted @   Zeoy_kkk  阅读(30)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示