状态压缩题目

D - 方格取数(1)
Time Limit:5000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u
Submit  Status

Description

给你一个n*n的格子的棋盘,每个格子里面有一个非负数。 
从中取出若干个数,使得任意的两个数所在的格子没有公共边,就是说所取的数所在的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
  • 查看 
  • 提交 
  • 统计 
  • 提问
代码:

你可能感兴趣的:(状态压缩题目)