dp记录每行向上的#的高度
然后O(n^2)直接扫过去即可
判断矩形条件:每行#高度相等且宽度相等
/*
USER_ID: test#ggvalid
PROBLEM: 407
SUBMISSION_TIME: 2014-07-14 17:45:35
*/
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cctype>
#include <cstdlib>
#include <cmath>
#include <algorithm>using namespace std;int t, n, m;
int dp[1005][1005];
char s[2][1005];int judge()
{int ret=0;for(int i=1; i<=n; i++){for(int j=1; j<=m; j++){if(dp[i][j]){int tmp=j;int ans=dp[i][j], ans2=dp[i+1][j];while(j<=m){if(dp[i][j]!=0&&dp[i][j]!=ans) return -1;if(dp[i][j]!=0&&dp[i+1][j]!=ans2) return -1;j++;if(!dp[i][j]) break;