这次题不是我出的,但是有些同学吵着要看题解,就先写一个简单的版本,有些东西肯定不会详解,比如你不知道快排是什么,那请自己去网上查,我肯定不会在这里讲的。
A题
这个题是签到题,基本上知道什么是二进制就会做。
B题
这个题和文曲星上那个猜数字游戏其实是一样的,只要枚举从00000~99999的所有情况,然后对于每一种情况判断一下,把满足的数字保存下来,如果超过两个或者有0个,就是not sure,如果只有一个,就输出那个数字就好了,值得注意的是,如果那个数字不够5位需要在前面输0.
C题
NOIP普及组难度,最简单的一种写法是想象成有n+1个位置,最后一个位置不管放什么都是0的获得,那么方程就是dp[i][k1][k2],表示到第i位,以k1开头,以k2结尾的最大值,那么最后要求的就是dp[n+1][i][i],这里i是0~3。没学过DP的这个真没法做。
D题
这个题直接模拟一下统计的过程就可以了,只有一个问题就是如何判断一个字符串到底是不是已经输入过了。这里说的很清楚,每个字符串只有4位,假设是abcd,那么把它们比‘a'多的部分记下来,a*26*26*26+b*26*26+c*26+d,用这个做hash表就可以了。
E题
这个题的题意看起来麻烦,其实就是求把N个点连成K个连捅块,最小的边之和是多少,裸的kruskal,学过一部分图论的就会明白了。
F题
这个题可以直接调用STL里面的partical_sort,也可以直接自己写一个快排,每次排序的时候如果(left>k)那么就不排这一边了,也能很快就出来。
G题
数学公式,忘了公式最后是什么了,就一个简单的组合数,但是因为N的范围太大,又要模一个东西,所以需要用到逆元这个东西,具体逆元是什么自己上网查。
H题
这个题其实去网上搜索一下”ACM 最小环“,就知道该怎么做了,我直接去网上随便搜了一个代码改了一行交上去就过了。
最后奉劝大一没多少基础的新生不要一上手就想做这个想做那个的,ACM难度很大,需要一步一步来,一步登天在这里是不适用的,虽然我写了题解,但是大部分人依然是看不懂的,如果真的想在这个领域有所成的话,请放下所有的浮躁,耐心努力一段时间,才能有明显的进步
A题
这个题是签到题,基本上知道什么是二进制就会做。
B题
这个题和文曲星上那个猜数字游戏其实是一样的,只要枚举从00000~99999的所有情况,然后对于每一种情况判断一下,把满足的数字保存下来,如果超过两个或者有0个,就是not sure,如果只有一个,就输出那个数字就好了,值得注意的是,如果那个数字不够5位需要在前面输0.
C题
NOIP普及组难度,最简单的一种写法是想象成有n+1个位置,最后一个位置不管放什么都是0的获得,那么方程就是dp[i][k1][k2],表示到第i位,以k1开头,以k2结尾的最大值,那么最后要求的就是dp[n+1][i][i],这里i是0~3。没学过DP的这个真没法做。
D题
这个题直接模拟一下统计的过程就可以了,只有一个问题就是如何判断一个字符串到底是不是已经输入过了。这里说的很清楚,每个字符串只有4位,假设是abcd,那么把它们比‘a'多的部分记下来,a*26*26*26+b*26*26+c*26+d,用这个做hash表就可以了。
E题
这个题的题意看起来麻烦,其实就是求把N个点连成K个连捅块,最小的边之和是多少,裸的kruskal,学过一部分图论的就会明白了。
F题
这个题可以直接调用STL里面的partical_sort,也可以直接自己写一个快排,每次排序的时候如果(left>k)那么就不排这一边了,也能很快就出来。
G题
数学公式,忘了公式最后是什么了,就一个简单的组合数,但是因为N的范围太大,又要模一个东西,所以需要用到逆元这个东西,具体逆元是什么自己上网查。
H题
这个题其实去网上搜索一下”ACM 最小环“,就知道该怎么做了,我直接去网上随便搜了一个代码改了一行交上去就过了。
最后奉劝大一没多少基础的新生不要一上手就想做这个想做那个的,ACM难度很大,需要一步一步来,一步登天在这里是不适用的,虽然我写了题解,但是大部分人依然是看不懂的,如果真的想在这个领域有所成的话,请放下所有的浮躁,耐心努力一段时间,才能有明显的进步