感受:做H题的时候我举了个反例证明了不能贪心,可我居然怀疑自己的结论,居然在想别的贪心策略,浪费了时间。感觉自己的dp依旧弱的一批。。会的依然会,不会的依然不会,而dp这个东西看到那些会的人做的那是相当快,不会的话可能状态都设计不好。不说了,搞dp去了。
A
题目大意:有n种剑,有一个没被偷,其他的都被偷了不知道多少个,每个人都只能偷相同数量的剑,问最少被多少个人偷了。
思路:既然要人最少,那就让他们每个人都尽量多拿剑,所以就求一个最大公约数。
B
题目大意:给你一个字符串,让这个字符串每个偶数子串都含有ab字符。
思路:水题,从左到右扫过去就ok了。
C
题目大意:有n个瓶子要推倒,每次推倒需要a[i]*num+1的花费,num是已经推倒的数量,a[i]是每个瓶子特定的数值。
思路:水题。贪心的从大的a到小的a来推倒,顺便保存下标。
D
题目大意:给你三个矩形的左下角坐标和右上角坐标,有一个白纸和两个黑纸,问能否看到白纸。
思路:从面积上进行考虑,用白纸面积减去分别和两个黑纸相交的面积,这时是重复减去三个矩形重合部分了,再加上就行了。当然如果单纯考虑坐标的话对思维的复杂度也是一个挑战,所以我写了一个矩形类,内置一些函数,简化代码。
E
题目大意:2048游戏,问能否从给定的数字得到2048
思路:玩过这个游戏的话应该挺简单的,就是判断当前需要多少个什么数,然后用map存一下,挨个判断就行了。
F题
题目大意:要组建ICPC队伍,每个队伍三个人,至少有一个打代码的和一个搞数学的,问最多能组成多少队。
思路:毫无疑问,先安排啥也不会的是最优的。最后判断一个c和m能组成多少队再加上就行了。
G
题目大意:在棋盘上摆放骑士,要让骑士能打到的人最多,问如何摆放。
思路:既然骑士走“日字”,那就黑白相间的摆放,这样黑的能打到最多的白的,白的也同理。
H
题目大意:要让相邻的木板不能有相同的高度,问最少花费。
思路:没做出来。草率了,举了个反例证明不能贪心之后我居然我还在想贪心。。。我在怀疑自己的结论。。。不够自信。
因为限制只有相邻木板,所以一个木板最多提升两次就能保证符合题意,然后就dp去枚举所有情况,最后取最小值就行了。