2026牛客寒假营第三场题解

宙天

https://ac.nowcoder.com/acm/contest/120563/A

2026牛客寒假营第三场题解

A. 宙天

题目链接:https://ac.nowcoder.com/acm/contest/120563/A
代码链接:https://ac.nowcoder.com/acm/contest/view-submission?submissionId=82110201

注意到x的范围很小,只有100,直接枚举k就行

B. Random

题目链接:https://ac.nowcoder.com/acm/contest/120563/B
代码链接:https://ac.nowcoder.com/acm/contest/view-submission?submissionId=82117592

注意到数据是随机生成的。这道题的做法很多,比如随机枚举两个数,判断他们的gcd是否大于1,然后随机若干遍,再比如枚举整个数组,判断其中是2的倍数的数字有多少个,由于n很大的时候全为奇数的概率几乎为0,如果找不到大于等于2个奇数就说明n不大,直接暴力双重循环枚举i和j就可以。代码的做法是通过筛法,经实验当筛到5000的时候可以通过这道题

C. Inverted World

题目链接:https://ac.nowcoder.com/acm/contest/120563/C
代码链接:https://ac.nowcoder.com/acm/contest/view-submission?submissionId=82141533

既然题目最后要让s中任意两个相邻元素互不相同,按照s的开头为0/1,会发现实际上最后的结果只有两种,而肯定不做重复操作,只改变不同的位置是操作数最少的。对于每一种答案的情况,维护,分别表示最后改变0和最后改变1的作用子串的数量,尽可能接在已有数组的后面,实在没有选择再开辟新的作用子串,最后把加起来就是答案。

D. 系ぎて

题目链接:https://ac.nowcoder.com/acm/contest/120563/D
代码链接:https://ac.nowcoder.com/acm/contest/view-submission?submissionId=82191103

做两次bfs,第一次尝试直接把1和1连接起来,然后用染色法判定2和2是否能连通,然后交换1和2,再做两次bfs,只要有一次能成功连通就说明题目存在这样的两条路径。

E. 躯树の墓守

题目链接:https://ac.nowcoder.com/acm/contest/120563/E
代码链接:https://ac.nowcoder.com/acm/contest/view-submission?submissionId=82167315

可以参考最小生成树Krustal算法的思路。我们先框定能满足题目条件的k的范围,最小的k的取值可以取到从1到m,也就是,最大能取到从m-n+2到m,也就是,如果k不在这个范围里肯定不行。然后我们考虑先取从1到m,这样产生的k值可能有剩余,然后我们考虑把最短边加入连通块当中,加入结束之后,可能会产生连通块里的一些无效边,这时候我们判断,有没有无效边可以填,可以不可以把剩下的所有边的边权都加一,如果可以就把下一个最小边权填在无效边权上。依此类推即可。

F. Energy Synergy Matrix

题目链接:https://ac.nowcoder.com/acm/contest/120563/F
代码链接:https://ac.nowcoder.com/acm/contest/view-submission?submissionId=82145375

可以画一张图辅助理解。小小红每次只能走一步,最多是列数+1,也就是从第一列走到第列至少要走步,想要小小红走的步数尽可能少,就是希望小小红能尽可能少的出现拐弯的情况,也就是让向上或者向下走的步数尽可能少,而且肯定不会掉头往回走。如果,小小红出生就在终点,不需要移动,如果,小红可以直接放在第二行第二列,小紫不能把终点堵住,只能放在第一行第二列,小小红还是直接向右走一步到终点。如果,小红可以放在第二行的第三列,这时候,无论后续再怎么放,小紫也不可能把箱子放在第一行,否则会把路直接堵死,违背题意,所以小小红会直接走到终点。同理。但是到了,小红还是按照同样的策略,小紫可以直接放在第一行的第五列,让小小红拐一次弯。根据上面的讨论,我们可以发现,小红每次放一个箱子,可以直接控制小紫没有办法在这一列和相邻的两列放箱子,而第一列不需要控制,因为小紫不可能放在第一行第一列。所以,小红开始放在第二行第三列,小紫只能放在第一行的第五列,控制小小红在这里拐一次弯,然后小红放在第一行的第八列,让小紫放在第十行的第二列,小小红又转一次弯...所以我们可以得到一个最小步数的公式

G. スピカの天秤

题目链接:https://ac.nowcoder.com/acm/contest/120563/G
代码链接:https://ac.nowcoder.com/acm/contest/view-submission?submissionId=82114057

根据题目,我们只能拿走砝码,所以,如果一开始天平是平衡的,我们在两边随便挑一边拿走一颗,就能让天平不平衡,就能改变状态,而如果天平一开始不是平衡的,我们拿轻的一边的砝码肯定对天平的状态没有影响,甚至会让天平像重的一边更加倾斜。所以答案很明显,就是把砝码拿到天平向另一边倾斜或者平衡,而且为了要拿的数目尽可能少,我们肯定要从重的开始拿。

H. Tic Tac DREAMIN’

题目链接:https://ac.nowcoder.com/acm/contest/120563/H
代码链接:https://ac.nowcoder.com/acm/contest/view-submission?submissionId=82136874

这道题可以用叉乘的公式求。但赛时的代码是用分类讨论做的:如果A和B重合,显然无解。如果A和B在同一条水平线上,无论x取什么,三角形的面积都是固定的,如果这个面积就是2,可以直接随便输出一个x轴上的点,如果这个面积不是2,直接输出无解。如果A和B在同一竖直线上,并且现段长度为,那么我们只需要找一个x轴上和这条线段水平距离为的点就可以。对于更为一般的情况,我们直接找直线和x轴的交叉点,这时候,把的竖直方向上的距离作为高,找的点的水平距离作为底,这个求出来的面积就是三角形的面积。让这个面积为2就可以。

I. BenzenE

题目链接:https://ac.nowcoder.com/acm/contest/120563/I
代码链接:https://ac.nowcoder.com/acm/contest/view-submission?submissionId=82194791

最开始,我们直接令所有的,都有,这时候得到一个结果,现在我们开始做替换,如果我们要把替换成,相当于先给里去掉,即,然后再异或上,即,然后异或满足结合律,也就是每做一次替换,相当于给异或上。如果有这么一个替换方案,让,那方案就存在,如果没有相应的替换方案,那就不存在这样的c数组。所以实际上问题就是,由构成的线性基,能不能表达出,然后还要把方案还原出来。代码里用的set维护还原方案,时间上可能偏慢,但实际上对于用于线性基的表示的数不多,我们只需要用01串来维护就可以?

J. Branch of Faith

题目链接:https://ac.nowcoder.com/acm/contest/120563/J
代码链接:https://ac.nowcoder.com/acm/contest/view-submission?submissionId=82121568

画一颗完全二叉树就可以看到,第1层的节点只有1,第二层的节点就是2和3,第三层的节点就是4到7,依次类推,第i层的节点就是,注意考虑最后一层可能没填满就行。

全部评论

相关推荐

01-28 16:12
中南大学 Java
几年前还没有chatgpt的时候,刷题真的是很痛苦。刷不出来只能看题解,题解有几个问题:第一个是每次看的写题解的人都不一样,很难有一个统一的思路;第二个也是最重要的是,题解只提供了作者自己的思路,但是没有办法告诉你你的思路哪里错了。其实很少有错误的思路,我只是需要被引导到正确的思路上面去。所以传统题解学习起来非常困难,每次做不出来难受,找题解更难受。但是现在chatgpt能做很多!它可以这样帮助你 -1. 可以直接按照你喜欢的语言生成各种解法的题解和分析复杂度。2. 把题和你写的代码都发给它,它可以告诉你 你的思路到底哪里有问题。有时候我发现我和题解非常接近,只是有一点点🤏想错了。只要改这一点点就是最优解。信心倍增。3. 如果遇到不懂的题解可以一行一行询问为什么要这样写,chatgpt不会嫌你烦。有时候我觉得自己的range写错了,其实那样写也没错,只是chat老师的题解有一点优化,这个它都会讲清楚。4. 它可以帮你找可以用同类型解法来做的题。然后它可以保持解法思路不变,用一个思路爽刷一个类型的题。如果题目之间思路又有变化,它会告诉你只有哪里变了,其他的地方还是老思路。5. 它也可以直接帮你总结模板,易错点。经过chat老师的指导,我最大的改变是敢刷题了。之前刷题需要先找某一个人写的算法题repo,然后跟着某一个人他的思路刷他给的几个题。如果想写别的题,套用思路失败了,没有他的题解,也不知道到底哪里错了;看别人的题解,思路又乱了。这个问题在二分查找和dp类型的题里面特别常见。但是现在有chat老师,他会针对我的代码告诉我我哪里想错了,应该怎么做;还按照我写代码的习惯帮我总结了一套属于我的刷题模板。每天写题全是正反馈!
明天不下雨了:那我建议可以用 chatgpt atlas 或者 dia 去刷,也可以用 chrome 加个 ai 插件去刷 左边刷题右边 chat 效果很好
AI时代的工作 VS 传...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务