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