Description
给你一个n*n的格子的棋盘,每个格子里面有一个非负数。
从中取出若干个数,使得任意的两个数所在的格子没有公共边,就是说所取的数所在的2个格子不能相邻,并且取出的数的和最大。
从中取出若干个数,使得任意的两个数所在的格子没有公共边,就是说所取的数所在的2个格子不能相邻,并且取出的数的和最大。
Input
包括多个测试实例,每个测试实例包括一个整数n 和n*n个非负数(n<=20)
Output
对于每个测试实例,输出可能取得的最大的和
Sample Input
3 75 15 21 75 15 28 34 70 5
Sample Output
188
代码:
H:约会
-
总时间限制:
- 2000ms 内存限制:
- 65535kB
-
描述
-
一个acmer想要去和妹子约会,他们处于一个N行M列的方格地图中,acmer在地图左上角坐标为(1,1)的位置,而妹子在地图右下角坐标为(n,m)的位置,acmer一个单位时间只可以移动到上下左右相邻的一个格子上。然而在这个地图中有许多墙和不同颜色的门,墙是不可以穿越的,只有拿到和门颜色一样的钥匙,才能打开对应颜色的门,只有两个格子之间的门都被打开了acmer才可以从当前格子走到门另一边的格子。acmer当然想要最快时间内到达妹子的位置,你能帮助acmer计算出最短到达的时间么?
输入
-
多组测试数据。
第一行输入三个整数,N、M、P,分别表示地图有N行M列,P种颜色的门(1 <= N,M <= 50 , 0 <= P <= 10)
第二行输入一个整数K,表示有墙和门的数量总共有K个(0 <= K <= 500)
接下来K行,每行输入5个整数,xi1,yi1,xi2,yi2,gi。如果gi值为0,表示格子(xi1,yi1)和格子(xi2,yi2)之间有墙,如果gi>=1,表示格子(xi1,yi1)和格子(xi2,yi2)之间有一个gi颜色的门。
接下来输入一个整数S,表示有数量为S的钥匙在迷宫中(0 <= S <= 50)
接下来S行,每行输入3个整数,xi1,yi1,qi,表示格子(xi1,yi1)含有颜色为qi的钥匙。
1 <= xi1,xi2 <= N 1 <= yi1,yi2 <= M | xi1 - xi2 | + | yi1 - yi2 |=1 0 <= gi <= P 1 <= qi <= P
输出
- 输出一个整数表示acmer最短到达妹子位置的时间,如果acmer不能到达妹子的位置,则输出"zhuding gudu yisheng"(引号不用输出) 样例输入
-
4 4 9
-
9
-
1 2 1 3 2
-
1 2 2 2 0
-
2 1 2 2 0
-
2 1 3 1 0
-
2 3 3 3 0
-
2 4 3 4 1
-
3 2 3 3 0
-
3 3 4 3 0
-
4 3 4 4 0
-
2
-
2 1 2
-
4 2 1
样例输出
-
14