#include<iostream> #include<cstdio> #include<cstring> using namespace std; #define N 309 char a[N][N]; int dp[N][N]; int res[N]; int n; int main() { scanf("%d",&n); for (int i=0;i<n;i++) scanf("%s",a[i]); for (int i=0;i<n;i++) dp[0][i]=a[0][i]-'0'; for (int i=0;i<n;i++) dp[i][0]=a[i][0]-'0'; for (int i=1;i<n;i++) for (int j=1;j<n;j++) if (a[i][j]-'0') dp[i][j]=min(min(dp[i][j-1],dp[i-1][j]),dp[i-1][j-1])+1,res[dp[i][j]]++; for (int i=n;i>=3;i--) res[i-1]+=res[i]; for (int i=2;i<=n;i++) if (res[i]) printf("%d %d\n",i,res[i]); return 0; }
【USACO3-3-4】家的范围 dp
猜你喜欢
转载自blog.csdn.net/dadatu_zhao/article/details/80441552
今日推荐
周排行