n*m的矩阵,其中有k个格子是有图案的,q个询问,如果每次询问的两个格子上都有图案,且可以通过最多变相两次到达(路上不能有其他有图案的格子),这两个格子的图案并得到两分,否则-1分。
其实仔细想想就是连连看的游戏模式,比赛中觉得搜索太暴力会T没敢尝试,结果其实暴力写法也才80ms就过了。
直接暴力模拟能不能满足条件就可以了。
#include
#include
#include
#include
#include
#include
#include
using namespace std; const int maxn=333; int map[maxn][maxn]; int n,m; int k; int q; int ans; int x1,y1; int x2,y2; int fx[maxn],sx[maxn]; int fy[maxn],sy[maxn]; bool solve() { memset(fx,0,sizeof(fx)); memset(sx,0,sizeof(sx)); memset(fy,0,sizeof(fy)); memset(sy,0,sizeof(sy)); fx[x1]=1; sx[x2]=1; for(int i=x1+1;i
=0;i--) { if(map[i][y1]==0) { fx[i]=1; } else { break; } } for(int i=x2+1;i
=0;i--) { if(map[i][y2]==0) { sx[i]=1; } else { break; } } for(int i=0;i
=0;i--) { if(map[x1][i]==0) { fy[i]=1; } else { break; } } for(int i=y2+1;i
=0;i--) { if(map[x2][i]==0) { sy[i]=1; } else { break; } } for(int i=0;i