【题解】2019年广东工业大学腾讯杯新生程序设计竞赛

A

签到题,按题意输出这些数字里面的最大值即可.

B

因为是后手且两样武器不同,不存在败,如果手中存在克制的则赢,无则平(其实就是个剪刀石头布)

C

签到,要注意无效票也算人数.如果反对和赞成各占一半优先考虑赞成票.

D

对于1操作,直接修改即可。
对于2操作,把区间[l,r]范围的数复制到另一个数组里,排个序,然后相同的数字就变成连续的了,只需找出连续最多的数连续了几次就可以了。

E

假设第1个检查的日期为a,第n个为b。
先考虑最差的情况,就是连续工作b-a+1天。
如何优化呢?n个检查日期把[a,b]划分为n-1个连续的段,
比如123456789中123和789是检查时间,用1次连续工作机会就是消耗9天,
多用一次连续工作的机会就相当于把1次连续工作断成2次,即变成123和789,共消耗6天。
基于这样的思想,我们把这n-1个连续的段从大到小排个序,依次断开1次为2次。

F

原本的题意是:

有n个一字排开的山洞,有一只狐狸藏在其中一个洞中(但是猎人不知道是哪个洞).

每天白天,他都可以检查其中一个洞,如果狐狸在洞中,那么他就抓住了狐狸.

否则,每天晚上,狐狸都会随机移动到一个相邻的洞中(如果狐狸在第n个洞那么只能移动到第n-1个洞中,如果在第1个洞同理),不能呆在原地.

思路

既然要确保使用的方案能够确保抓住狐狸,那么不妨做这样的假设:

一开始每一个洞中都有狐狸,而且每天晚上他们都会分身往两边的洞移动(影流之主)

所以确保能够抓住狐狸的方案,在这种假设下就变成能够抓住全部狐狸的方案.

可以意识到一点:

在当前抓捕次数是奇数的时候,如果检查偶数洞,那么抓到的一定是开局就在偶数洞的狐狸;如果检查奇数洞,那么抓到的一定是开局就在奇数洞的狐狸.

抓捕次数为偶数同理.

因为每天狐狸都要移动到相邻的位置,所以如果天数为奇数的时候(开局时第一天,所以是奇数),某狐狸在奇数洞,那么天数为偶数的时候,他一定是在偶数洞.

开局在偶数洞的狐狸同理.

以下用X代表一定没有狐狸的洞口,用O代表有狐狸的洞口:

考虑先把奇数(先抓偶数的也行)的狐狸抓住.

方法就是从最边上开始,奇数天就检查奇数洞,偶数天就检查偶数洞.

对于5的样例,第一天的情况如下:

OOOOO

OOOOO

如果检查一个最右边的奇数洞(5):

OOOOX

那么检查之后5号洞的右边不会存在[开局位于奇数洞]的狐狸(废话),经过一晚上之后:

OOOOO

第二天(偶数天),这时检查4号洞:

OOOXO

那么检查之后4号洞的右边不会存在[开局位于奇数洞]的狐狸(5号洞的狐狸一开始位于4号洞),经过一晚上之后:

OOOOX

第三天(奇数天),检查3号洞:

OOXOX

一晚上后:

OOOXO

第四天(偶数天),检查2号洞:

OXOXO

抓捕之后发现,这一天已经没有[开局位于奇数洞]的狐狸了,

这时可能会有一个疑问,为什么"检查之后的洞的右边不会存在[开局位于奇数洞]的狐狸".

因为从一个奇(偶)数洞走到另一个奇(偶)数洞需要2个晚上,手动模拟一下:

如果检查了4号洞,这时2号有一只狐狸:

XOXXX

那么二号洞的狐狸想要跑到4的右边,那么这个晚上就要往右走:

XXOXX

但是按照方案,这一天应该检查3号洞,所以他就白给了.

但是如果往左走,最终还是会被抓到.

以上的操作,抓捕所有[开局位于奇数洞]的狐狸,需要4天,如果先抓捕[开局位于偶数洞]的狐狸呢?

1:OOOOO

检查4:OOOXO

2:OOOOX

检查3:OOXOX

3:OOOXO

检查2:OXOXO

则只需要3天,开始抓[开局位于奇数洞]的狐狸:

4:XOXOX

检查4:XOXXX

5:OXOXX

检查3:OXXXX

6:XOXXX

检查2:XXXXX

只需6天就能完成抓捕(之前的方案需要7天).

但是这明显不是字典序最小的方案,因为可以从左往右抓{2,3,4,2,3,4} < {4,3,2,4,3,2}

但是答案不完全是2抓到n-1再2抓到n-1,因为当n是偶数时(比如4),{2,3,2,3}压根不会抓到[开局位于奇数洞]的狐狸.

如下:

1:OOOO

检查2:OXOO

2:XOOO

检查3:XOXO

3:OXOX

检查2:OXOX(抓了一个X洞)

4:XOXO

检查3:XOXO(抓了一个X洞)

还是会有剩下的狐狸.

所以当n时偶数时,应该是2到n-1再n-1到2,所以4应该是{2,3,3,2}(具体自己模拟).

那么这个题的规律就找到了:

n是奇数时:2,3,4....n-1,2,3,4...n-1

n是偶数时:2,3,4....n-1,n-1...4,3,2

G

其实这里有两个关键的地方,第一个是排序,在这里我们选择桶排序,因为题目涉及的出牌方式与数量有关。第二个是顺子的处理,关于顺子,如果我们用了桶排序,就可以取“桶”里面,长度为5的区间,根据组合数学的乘法原理,就可以得到答案了,“桶”为0的情况也可以处理,详情可以看一下标程。剩下的三带一和三带二也是考组合数学的知识。能掌握上面的几点这道题基本就能AC了。

H

打一下表会发现,对于每一个<n时,当相等时,答案相等

所以只要预处理出64种答案出来,然后直接输出.

记忆化搜索会被卡掉

I

对于 这条式子,我们可以考虑用高中组合数学课本学过的“二项式定理”展开 。展开后,会发现前n项都是p的倍数,第n+1项(最后一项)是:
然后,我们可以分类讨论:
1.当n为偶数时, 通过二项式定理展开后,可以这样表示:原式= (是一个大于等于0的整数)。又通过题目输出对取模的理解可以知道:,所以.
2.当n为奇数时, 通过二项式定理展开后,可以这样表示: (X是一个大于0的整数)。,所以.
综上所述,我们只需要判断n的奇偶性,就可以得到答案了。
因为n设置的很大,所以题目已经提示要用char数组存。如果仅是判断n的奇偶性,其实只要判断最后一位是奇数还是偶数就行了。

J

解法1:

手算前几项或许可以找到规律

解法2:

,
则有,
求导得,
显然,
所以有递推式, ,
所以,
最终答案为

K





L

由于下面的石板的摆放不会影响上面的石板是否会掉落,所以从第一块石板依次往下分析会比较简单

每一块石板是否会掉落可以利用石板的产生的重力(质量分布均匀的石板的重心位于处)对紧邻这块石板之下的那块石板的右端所产生的力矩来判断

当且仅当力矩为0时,第一块石板刚好不会掉落并且突出量最大,所以

接着考虑第一块石板和第二块石板看成一个整体,所产生的力矩也为0时,突出总量最大

,结合上面的条件,解得

以此类推,最终可以得到,全部加起来即为答案.

M

以长度为2的字符串ab作为例子
进行一次操作后得到abba,进行多次操作后会形成周期为abba的字符串,利用这一性质,答案就是位置为上的字符.

全部评论
感谢~~~
点赞 回复
分享
发布于 2019-12-08 10:13
谢谢
点赞 回复
分享
发布于 2019-12-08 23:43
联想
校招火热招聘中
官网直投
穷游中国还在吗hh
点赞 回复
分享
发布于 2019-12-09 00:02
牛逼牛逼
点赞 回复
分享
发布于 2020-05-17 12:18

相关推荐

20 14 评论
分享
牛客网
牛客企业服务