You live in a small well-planned rectangular town in Phuket. The size of the central area of the town is H kilometers x W kilometers. The central area is divided into HW unit blocks, each of size 1 x 1 km2. There are H + 1 streets going in the West to East direction, and there are W + 1 avenue going in the North-South direction. The central area can be seen as a rectangle on the plane, as shown below.
![](http://www.bnuoj.com/v3/img/a%284%29.jpg)
Input
The first line contains an integer T, the number of test cases (1 <= T <= 5). Each test case is in the following format.
Output
For each test case, for each day, your program must output the number of ways to go to the university modulo 2552 on a separate line. i.e., the output for each test case must contains K lines.
Sample Input
2 2 2 3 1 0 0 0 1 2 1 0 2 0 0 2 1 2 1 1 1 2 1 100 150 2 1 99 150 100 150 2 99 150 100 150 100 149 100 150
Sample Output
3 4 4 1562 0
Hint
The amount of I/O for this task is quite large. Therefore, when reading input, you should avoid using java.io.Scanner which is much slower than using java.io.BufferedReader.
The blocking is done in such a way that it is not possible to reach parts of the streets or avenues which is blocked from some other part which is blocked as well through any paths containing only West-to-East and South-to-North walks.
这句话的意思是每条不能走的道路不会相互影响!所以可以用总数 - 两个端点所能到达的情况数!
<span style="font-size:14px;color:#ff0000;">#include<iostream>
#include<stack>
#include<algorithm>
#include<string.h>
#include<math.h>
#include<stdio.h>
using namespace std;
struct node
{
int x1,y1,x2,y2;
}N[305];
int dp[1005][1005];
int main()
{
int t;
cin>>t;
while(t--)
{
int m,n,k;
cin>>m>>n>>k;
for(int i=0;i<=(m>n?m:n);i++)
dp[i][0] = dp[0][i] = 1;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
{
dp[i][j] = (dp[i-1][j] + dp[i][j-1])%2552;
}
while(k--)
{
int ans = dp[n][m];
int a;
cin>>a;
for(int i=0;i<a;i++)
{
cin>>N[i].x1>>N[i].y1>>N[i].x2>>N[i].y2;
ans -= dp[N[i].y1][N[i].x1] * dp[n-N[i].y2][m-N[i].x2];
ans = (ans+2552)%2552;
}
if(ans < 0)
ans += 2552;
cout<<ans<<endl;
}
}
return 0;
}
</span>