3月第3场考试

这大周老师要求刷题刷完前两面,然而进度超慢的我第一面才勉强刷完,好像还剩下六七题。当然我终于来刷第二面的题了,前面的还挺简单的,但后面就是贪心、递归之类的算法了。刷到第二面我还是很激动、很开心、很兴奋。对刷到第二面的感慨到此为止接下来将开始的将考试题和感慨。

我们上课间考了俩场试。一个是ACM赛,我只会一二两题。考试是是基本不关我的事的,因为我基本不会做。还有一场是庆生赛。我很开心,因为我rating加了3。好不容易啊!一下掉了15名,好不容易才加了3,不过不减反加令我so happy。我这次比赛是拿了样例分和部份分。第一二题是搜索。第二题我还在福州培训时的ppt中找到了一样的题。但我不会打搜索啊。所以这题我输出”NO ANSWER“拿了10分。第三四题是拿小数据的分数。第三题两重循环判断拿了42分。第四题可暴力了,我打了个四重循环枚举,居然拿了40分。

第一题:输入一个由0和*组成的矩阵。求完全被*包围的0的个数。

我们只需要把“*”外面的“0”变成其他符号,再数这个矩阵里有多少个“0”就可以了。我们要把矩阵“*”不包围的“0”全部变成“1”,就相当于把“*”外面的连在一块的“1”全部访问一遍,这时候可以用深度搜索的方法实现。在面积计算中,没有搜索深度的限制,问题的状态就是矩阵中每个元素的位置(即行号和列号)。一般人都以为是从左上角开始,但如果左上角是“*”,那就无法搜下去了。因为我们应该从四条边的每一个位置开始搜一遍,为了使程序实现更简单,我们可以在矩阵外面加四条边,全是“0”,然后从新的左上角开始搜索,就可以解决这个问题。另外,当矩阵中的某个位置已经访问过,就不需要再访问,否则就会出现死循环,永远结束不了。当然我不会打搜索,我去慢慢学搜索吧。

第二题:拯救**输入有#是墙过不去。a是要救的人。x是守卫,杀死需1个单位时间。r是救援队。求拯救需要几个单位时间。这是典型的BFS,但我不会。会打BFS就差不多会打这题了。

第三题:每个人有个数,自己的数是是别人的倍数s++,求s=?有10^5个人。

模拟筛法,按照筛法求素数的模板即可。

第四题:求有几个数可以等于前面随意3个数(可重复)。我们假设 k1,k2,k3<I 如果想验证i,我们记录 a[k1]+a[k2]是否出现过,我们在验证的时候,看 a[i]-a[k3]是不是真,如果是真,那么就可以了。

猜你喜欢

转载自blog.csdn.net/wangzhuojia/article/details/79579520