编程题:前缀和+枚举
在附近的幼儿园,他们最近制作了一个吸引人的力量和敏捷游戏,孩子们都喜欢。
游戏的表面是一个大的平面区域,分成N×N个正方形。
孩子们把海绵状的大木棒放在水面上。立方体的边与正方形的边长度相同。当立方体放在表面上时,它的边与一些正方形对齐。一个立方体也可以放在另一个立方体上。
孩子们喜欢建造堡垒并把它们藏起来,但他们总是留下一片狼藉。因此,在关闭幼儿园之前,老师们会重新排列所有的立方体,使它们在表面上占据一个矩形,矩形中的每个正方形上正好有一个立方体。
在一次移动中,一个立方体从一个正方形的顶部移动到另一个正方形的顶部。
编写一个程序,给定曲面的状态,计算将所有立方体排列成矩形所需的最小移动次数。
### 输入格式:
第一行包含整数N和M(1≤N≤100, 1≤M≤N2),表示曲面的尺寸和当前曲面上的立方体数量。
以下M行中的每一行都包含两个整数R和C(1≤ R、C≤N),表示包含立方体的正方形的坐标。
### 输出格式:
输出最小的移动次数。假定解决方案永远存在。
### 输入样例1:
in
3 2
1 1
1 1
### 输出样例1:
out
1
### 输入样例2:
in
4 3
2 2
4 4
1 1
### 输出样例2:
out
2
### 输入样例3:
in
5 8
2 2
3 2
4 2
2 4
3 4
4 4
2 3
2 3
### 输出样例3:
out
3
在第一个示例中,将其中一个立方体从(1,1)移动到(1,2)或(2,1)就足够了。
在第三个示例中,立方体从(2,3)移动到(3,3),从(4,2)移动到(2,5),从(4,4)移动到(3,5)。
答案:若无答案欢迎评论
游戏的表面是一个大的平面区域,分成N×N个正方形。
孩子们把海绵状的大木棒放在水面上。立方体的边与正方形的边长度相同。当立方体放在表面上时,它的边与一些正方形对齐。一个立方体也可以放在另一个立方体上。
孩子们喜欢建造堡垒并把它们藏起来,但他们总是留下一片狼藉。因此,在关闭幼儿园之前,老师们会重新排列所有的立方体,使它们在表面上占据一个矩形,矩形中的每个正方形上正好有一个立方体。
在一次移动中,一个立方体从一个正方形的顶部移动到另一个正方形的顶部。
编写一个程序,给定曲面的状态,计算将所有立方体排列成矩形所需的最小移动次数。
### 输入格式:
第一行包含整数N和M(1≤N≤100, 1≤M≤N2),表示曲面的尺寸和当前曲面上的立方体数量。
以下M行中的每一行都包含两个整数R和C(1≤ R、C≤N),表示包含立方体的正方形的坐标。
### 输出格式:
输出最小的移动次数。假定解决方案永远存在。
### 输入样例1:
in
3 2
1 1
1 1
### 输出样例1:
out
1
### 输入样例2:
in
4 3
2 2
4 4
1 1
### 输出样例2:
out
2
### 输入样例3:
in
5 8
2 2
3 2
4 2
2 4
3 4
4 4
2 3
2 3
### 输出样例3:
out
3
在第一个示例中,将其中一个立方体从(1,1)移动到(1,2)或(2,1)就足够了。
在第三个示例中,立方体从(2,3)移动到(3,3),从(4,2)移动到(2,5),从(4,4)移动到(3,5)。
答案:若无答案欢迎评论