竞赛讨论区 > 【题解】牛客小白月赛32

【题解】牛客小白月赛32

头像
houzhibin
编辑于 2021-03-22 10:33:05 APP内打开
赞 1 | 收藏 4 | 回复3 | 浏览1267

A - 拼三角

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

代码

B - 相对分子质量

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

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

代码

C - 消减整数

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

代码

D - 消灭星星

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

代码

E - 春游

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

1.所有的人都划双人船

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

3.所有人都划三人船

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

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

代码

F - 五连珠

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

代码

G - 有始有终

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

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

代码

H - 匹配矩阵

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

代码

I - 螺旋矩阵

按题意模拟即可

代码

J - 统计个数

暴力即可

代码

3条回帖

回帖
加载中...
话题 回帖

近期热帖

等你来战

查看全部

热门推荐