2017级新生周赛(三)题解

Easy1--A--欢迎来到实力至上主义的OJ思考一下可以发现,从出发点到达最短边之后,剩余的只需要不停的在最短边上反复横跳就好了。但是注意当n=1的时候不需要走,因为出发点本身也是一个点,直接输出0就可以了。http://paste.ubuntu.com/25902155/Easy2--B--崩崩崩一次循环,在读入的时候不断用总时间减去空闲时间,模拟一下。当时间被减没的时候,输出当天的天数就好了http://paste.ubuntu.com/25902146/Easy3--C--和小埋一起做准备运动emmmm,教会大家如何读入一个字符串。。这题在Hint的基础上补个输出就可以了。http://paste.ubuntu.com/25902143/Medium--D--魔法卡题少女思维,直接统计串中‘1’的个数,具体为什么,仔细思考一下就会明白了。会感觉很神奇的。当然用数组前缀和,或者直接循环统计个数判断做也是可以的。http://paste.ubuntu.com/25902158/Medium--E--Fate/Accepted我们知道只有当宝石的数量是n的因数的时候,才能构成一个正多边形。所以我们可以尝试用for循环把所有的剩余宝石个数的可能性都尝试一遍,如果(n%i!=0)说明无法构成正多边形,直接跳出就好,如果可以构成正多边型的话,就把选出的这些宝石的值求和,然后取出最大值输出就可以了。http://paste.ubuntu.com/25902165/Hard--F--炮姐的硬币你可以把n个硬币分成好几组,每组的数量都是n1,分好后会有两种情况。1.刚好分成x组,每组有(k+1)个这种情况下,如果第一个人拿a个,那第二个人就拿(k+1-a)个。每轮刚好可以拿完一组,这样就可以保证第二个人拿到最后一个硬币。2.无法刚好分成x组。只好分成x1组,前x组每组都有(k+1)个,最后一组的数量不足(k+1)个,假设只有b个这样的话只要,第一个人首先拿b个,情况就发生了反转,变成了第一种情况,只不过相当于换成了第二个人先拿。所以第一个人肯定可以拿到最后一枚硬币http://paste.ubuntu.com/25902168/

posted @ 2022-10-22 18:37  河南工业大学算法协会  阅读(18)  评论(0)    收藏  举报