【题解】牛客小白月赛32

A - 拼三角

枚举所有可能的挑选情况即可

代码

B - 相对分子质量

先将元素值代入化学式中,并将化学式转化成对应的中缀表达式,最后求中缀表达式的值。

应该学习一下代码最短的选手的写法

代码

C - 消减整数

为了保证次数尽可能的少,那么减数就得尽可能的大。
假设这个最大的减数为$

代码

D - 消灭星星

首先假如我们已知要保留的字母集合,
我们可以通过先枚举行,再枚举列判断是否删除改行(该行是否有要保留的字母集合)
我们可以用一个临时的二维数组存储原字符矩阵,并对该数组进行删除操作(加入我们要删除改行,就将整个行变成 '.')那么删除列也是同理的(要继续使用已被行删除操作过的临时二维数组)
既然知道了如何判断某一个保留字母集合是否正确,则我们可以枚举一个二进制数代表一个保留字母集合($

代码

E - 春游

下面五种情况取最小即可:

1.所有的人都划双人船

2.所有人都划双人船,但是有一个人,自己划一个双人船。
拿出一个双人船的兄弟,三个人开一个三人船。

3.所有人都划三人船

4.所有人都划三人船,但是有两个人划三人船,空一个位置
把这两个兄弟安排到一个双人船里去

5.所有人都划三人船,有一个人划三人船
拿出一个三人船的兄弟,这样就有4人,开两个双人船。

代码

F - 五连珠

为节省查找成本,以元素值为键,并以元素所在位置为键值建立映射,这样可以很快找到一个点所在位置。
每给出一个元素值,在相应位置做删除,某行元素个数少1,某列元素个数少1。然后分别检查两个矩阵,做出对应操作。
检查矩阵:
先检查对角线,分别遍历两个对角线;可以用两个一维数组分别对行,列元素的个数作标记,检查是否存在一行或一列没有元素。

代码

G - 有始有终

广搜最短路
操作1:
第一次连通一片无需放技能就能到达的点。
操作2:
这时候处于边界线且未能到达的点升级为电梯,可以达到任何上下左右相邻的点。
第二次从分别从各个电梯出发连通一片能到达的点。
这样就会搜出一条新的边界线,重复上述操作2。

操作2的执行次数就是广搜到的答案

代码

H - 匹配矩阵

为节省代码长度,最好写一个矩阵匹配函数,这里选择暴力匹配。
用4种小矩阵分别匹配大矩阵,然后求和。

代码

I - 螺旋矩阵

按题意模拟即可

代码

J - 统计个数

暴力即可

代码

全部评论
J题用bitset优化统计三元环可以出到n = 1e3级别 可以看看 https://codeforces.com/gym/100342的J题.
2 回复
分享
发布于 2021-03-20 22:38
这场比赛码量有点大
2 回复
分享
发布于 2021-03-20 22:42
博乐游戏
校招火热招聘中
官网直投
第一题我有点想不通,为什么不是仅仅判定最小的三个数和最大的三个数就行了? 还需要把所有的排列都要列一遍。 有反例吗?(我实在想不通😒)
点赞 回复
分享
发布于 2021-03-20 22:15

相关推荐

华为 池子泡半年 总包和华为13级一致,公积金10%,单人一室一厅公寓
点赞 评论 收藏
转发
头像
03-18 09:09
Java
点赞 评论 收藏
转发
1 4 评论
分享
牛客网
牛客企业服务