2008年5月12日14:28分。四川发生了8.0级大地震,都江堰成了重灾区,当然XX学院也成了重灾区中一所大学,很多建筑物都被严重的损坏了。地震后,我们需要来修复受损的房屋,XX学院从电脑里找出原来的设计图,现在需要你来修复...
现在给你2张平面图(最大:640X480),第一张是受损后的平面图,第二张是受损前的平面图。然后给你一些模块平面图(最大:128X128,最多128种),这些模块平面图可以使用无数次,这些图上只有0,1组成,当你覆盖上去的时候就记修复1次,我们希望用最少的修复次数去完成修复即与受损前的平面图相同。模块覆盖上去后的数字计算为xor (注:异或1 xor 1=0,0 xor 0=0,1 xor 0=1,0 xor 1=1。)值表示。如图:
注:
A:模块平面图
B:受损后的平面图
C:修复后的图
如图:
输入:给你一个N,表示有N组数据,然后每组数据:
n1,m1表示受损后的平面图的长宽。
然后n1行m1列表示受损后的平面图。
然后n1行m1列表示受损前的平面图
然后一个M,表示有M个模块平面图,然后以下是每个模块图数据:
n2,m2表示模块平面图的长宽
然后n2行m2列模块平面图。
输出:
每组数据输出一行case T: K
T表示第几组数据,K表示修复完成最少需要的修复次数(如果大家想不出来最优解,想想如果不完全恢复(恢复了大部分),最少修复次数)。
样例:
输入:
1 (表示一组数据)
3 4(修复前/后图的长宽)
0 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
0 1 1 1
1 1 1 1
2 (模块图的数量)
2 2 (模块图1的长宽)
1 0 (模块图1的图)
0 0
3 1 (模块图2的长宽)
0 (模块图2的图)
1
1
输出:case 1:1