首页 > 代码库 > 常州培训 day5 解题报告

常州培训 day5 解题报告

第一题:(贪心)

题目大意:给出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

这样明显更优。