计数具有阻塞和多个查询的GRID中的最小角路径数

时间:2015-08-02 00:37:45

标签: arrays dynamic-programming

我无法找到解决此竞赛问题的好方法。

简历中的statement是。

给定网格 N x M (1≤N,M≤1000), H 代表"空洞&#34 ;在该网格中(0≤H≤100),其中不能遍历其中的边界,并且 Q (1≤Q≤100)查询每个网格中有一个起点( xi yi )和终点( xf yf )。为每个查询打印从(xi,yi)到(xf,yf)的最小路径数。因为这个数字可能很大,所以使用mod 10 ^ 9 + 7来避免溢出。

输入

  

输入由多个测试用例组成,以文件结尾结束。每一个都描述一个地图,并以三个整数N,M和H开始,它们分别是网格的大小和孔的数量。然后,跟随H行,每行有四个整数xi,yi,xf和yf,描述了孔的左下角和右上角。接下来是整数Q,即查询数。然后,在Q行之后,每行有四个整数xi,yi,xf和yf,它们是如上所述的起点和终点。在连续测试之间,有一个空白行。保证在一张地图中,所有的洞都是不相交的,并且总有至少一种方法可以离开。

输入示例:

  

10 10 0
  3
  0 0 10 10
  0 1 9 10
  5 5 5 5

     

6 6 2
  1 0 2 2
  3 2 5 4
  1
  0 1 4 5

输出

  

你的程序必须为每个查询输出一行,用最少的移动从(xi,yi)到(xf,yf)的路数(mod 10 ^ 9 + 7)输出。

输出示例:

  

184756
  48620个
  1

     

46

关于这个问题的BFS需要内存。数学方法(组合)似乎因阻挡角而失败。所以动态编程似乎是最好的。但是,我无法弄清楚如何应对多个查询...

0 个答案:

没有答案