2016.8.15.总结

来源:互联网 发布:莽荒纪摇钱树数据 编辑:程序博客网 时间:2024/05/24 06:29

总结:

这次比赛比的不错,终于实现了我的梦想,获得了第一名,直接AK!在此我分析一下今天的题目:

[1]icow(icow)
这其实是一题水题,很水。注意:不能用快排,考试时差点弄错。首先,在循环里,用一个max记录下这个数列中的最大值,用k记录下最大值的编号,然后用两个变量记录下max div (n-1)和max mod (n-1)。分别按题目要求加入数列中,我在此不加说明。
[2]化装舞会(costume)
其实可以用合法方案的方法,先快排,再用两重循环枚举,i为从
1——最大的a[i](max),j 为max downto i+1 只要找到i和j 匹配就直接加上j-i 这样就可以对了。
[3]奶牛的比赛(contest)
这题可以用一个弗洛伊德(Floyed)算法做。
首先用一个数组存每头奶牛分别的比赛结果,F[i,j]记录第i头奶牛和第j头奶牛比赛的结果(谁获胜)所以F[i,j]=i 那么我们只需要用弗洛伊德的专署格式:三重循环,分别枚举k,i,j,然后判断i是否等于j,然后就看看F[i,k]的胜者是否为i ,F[k,j]是否是k。就可以把F[i,j]和F[j,i]设为i了。
最后判断每只奶牛是否跟所有牛都比赛过了,如果是,那么就inc(ans)。
[4]贝茜的晨练计划(cowrun)
这是一题比较典型的动态规划类题目,搜索(search)会超时,所以只能用动态规划做。所以由此我们可以想到,用F[i,j]表示走到第i分钟时疲劳值为j走的最远距离。这段状态转移方程分为两段,一段是贝茜休息时的,一段是贝茜走路时的。休息时的:F[i,j]:=max(F[i,0]{贝茜在i时间段刚好休息完(疲劳值为0)},F[i-j,j]{贝茜从 i-j 时间段开始休息,当时的疲劳值为j }); F[i,0]:=F[i,j];
走路时的:F[i,j]:=max(F[i-1,j-1]{表示它从上一个时刻走到这一个时间前的值},F[i,j]{表示它本身});
0 0
原创粉丝点击