“华为杯”中国矿业大学程序设计学科竞赛重现赛题解

A题 毕业生的序列游戏 

  需要一点点数论功底。(数论方向必写)

  1、将m1,和每个si拆成素数的乘积。比如:24=2*2*2*3、30=2*3*5、12=2*2*3

  2、然后可看出12*12%24=(2*2*3)*(2*2*3)%(2*2*2*3)=0(原理任何两个不同的素数gcd==1)

 

B题 A题

  水题,几个if就好了。虽然我是建一个图跑一遍dfs看看两点是否连通。

 

C题 均分糖果

  需要一点思维。提前每个数减去平均值,然后看到前r个数和为0就将Ans--并且前r个数删掉。(Ans开始等于总个数)

 

D题 B题

  将图正反跑一圈。(图论方向必写)

 

E题 很简单的题。。。。。。

  水题,前缀和

 

F题 最大公约数和最小公倍数问题

  枚举y0所有因子中满足是x0倍数的,然后暴力枚举。根据a*b=lcm(a,b)*gcd(a,b)来判断是否符合题意。放心,时间不会超。

 

G题 毕业生的纪念礼物

  贪心,先计数,因为太大了,要用map。得到每个数的个数后大到小排序。将排序后前三个数取出。然后将其他拆成一个个加在前三个数上。尽量满足三个数中最小的数最大,答案就是那个最小的数。

 

H题 毕业生的序列游戏

  概率dp。还没写出来

 

I题 你的粪坑v1

  水题

 

J题 你的粪坑v2

  简单dp,把每个状态考虑清楚就好了(dp方向必写)

 

K题 你的Alice

  感觉会超时的,可以把数据范围减小。然后,模拟模拟,ifif就好了。

  常用技巧:

  当你发现出现很多次循环后,并且循环并不会影响答案。你可以直接跳到最后几次循环。

 

posted @ 2019-07-06 20:23  opooopooo  阅读(337)  评论(0编辑  收藏  举报