今天是做大量练习的第一场,自己挂了一套上个暑假学校老队员做个的一场比赛
problem A就是在一堆数据中选出一些数据,使得它们的和是奇数,求能选到的最大和事多少,一开始头晕了,不知道怎么做,改看B题,B题是道水题,一会儿再说。做完B题后回过头来看看A,感觉没一个选或不选,于是想到了0/1背包,先把所有可能到达的状态记录下来,最后再看状态中能到达的最大的奇数,就是答案,时间复杂度为O(n^3),对于这个题n=100,已经是很快了。
problem B是一道水题,只需要看看相邻两个空地的间隔是否大于k完事!
problem C是最后做出来的,其实这个题不难,想到就简单了,要达到10^9,对于这个数列,可能不需要太多,所以可以每次先把数列的从第k到刚好大于s的弄出来,再做,完事!
problem D我花费的时间最多,不过思路很简单,只是一开始我用二分做,想快一点,结果调了半天,后来直接算,AC,因为4,7组成的数是很少的,可以先枚举出来
problem E这是一道树形dp题,其实树形dp就是在dfs上做文章,这里不说这个题了,方法就是做一遍dfs,而不是算出所有对的距离
problem F这个也是水题,两个数组搞定,简单模拟题
最后还无缘无故rank 1了
总结一下,我觉得最大的收获还是A题吧,在没有思路的情况下想到0/1背包,可能跟我今天早上做了到两人背包题目有关吧!