第一题:(贪心)
题目大意:给出N*M的矩形,要用正方形将它铺满(正方形之间不能重叠),相邻的正方形颜色不能相同,颜色用ABCD表示。要求从上到下从左到右字典序最小。
N,M<=100
解题过程:
1.首先感觉是能放就尽可能使正方形边长大,但是很明显有反例(见图A)
2.然后想到从上到下从左到右,依次检查,如果还没被铺上,那么就先铺上1*1的X,然后检查它右边能填什么,如果他右边能填的比它大(Y),那么就把1*1的改成尽可能大,如果他右边的比它小,那么它只要放1*1的X,然后右边放尽可能大的Y。 证明不来,直觉是对的,通过了所有数据。。
图A:7*5
A A A A A
A A A A A
A A A A A
A A A A A
A A A A A
B B X
B B
按1的话在X处放2*2的C,变成
A A A A A
A A A A A
A A A A A
A A A A A
A A A A A
B B C C
B B C C
而实际可以先 放1*1的C
A A A A A
A A A A A
A A A A A
A A A A A
A A A A A
B B C
B B
然后放2*2的B
A A A A A
A A A A A
A A A A A
A A A A A
A A A A A
B B C B B
B B B B
这样明显更优。