比赛题解
B题
给你两个数字A, C,可以把某一个数字拆成两个数字, 然后就组成新的三个数,比如说A B C。然后可以任意组合(几个数都行),符号也随便。问你某一种拆分方法之后所组合的数的最多种数。第一遍的时候就做的差不多对了,但是看了第一个样例,4 9 输出13,又被混淆了。最后终于改了回来,但是因为考虑的种类不够,还是没法输出正确答案,在队友的提醒下,想到还可以两个数组合(开始我只考虑了1个数和3个数的情况),终于A了,不过代码不忍直视。
1 |
|
D题
给你车站的数目,以及车线的数目,车线是用来连接车站的。但是注意的是,如果有多条车线连接是相同的两个车站,那么只能看成一条车线。然后让你输出密度= 车线的数目/车站的数目。
1 |
|
F题
告诉你谁和谁是好朋友,然后如果满足:两个本身不是朋友的人的共同好友大于等于K个,那么这两个人就是好友了。一开始我考虑的不周到,更新了两个人的朋友关系之后,只是把这个更新的关系应用到了后续的判断当中,忘记了可能这个朋友关系也可以更新原本可能未更新的人。但是考虑到如果外边在套上一个N的循环,那么就达到了O(n^4),n是可以达到100的,这样数据很大。所以没敢写。后来看队友宝乐的代码,发现他的优化还是蛮多的,看来有时候小的优化也是需要重视的。这里稍微改动一下队友的代码,发现队友写的挺不错。
1 |
|
H题
看图说话,题目中告诉你公式了,让你输出一个最小值一个最大值,只是简单的排个序即可。
1 |
|
I题
比赛的时候看不懂题意,后来补过了。给你一个字符串,你首先需要处理他的长度。把他的长度写成一个二进制串,然后从最后的7位挨着看,7位7位的输出16进制,但是如果这7位之前的某个高位是1,那么就不能7位输出了,需要把第8位上补上1再把这8位进行16进制输出。然后再把长度左移7位,继续处理下面的七位,直到这个二进制数字处理完。最后就简单了,直接输出原来字符串每个字符的16进制,注意用%02X输出
1 |
|
J题
又是一个circle,同五一假期做的我们感到很茫然的F题一样,用了同样的方法。同时我们注意到M是小于等于N的,那我们就在本身的数组上面再加上一个数组,这样我们就不用什么取余了,直接挨着往后找就行,不管怎么找都不会超过数组大小。
1 |
|