标签:size ast nal color mini clu script written chmod
事实上嘞,这个线能够仅仅延伸一端
然后嘞,爆搜一次就能够
最后嘞,600-800ms过
本弱就是弱啊。你来打我呀……
#include<iostream> #include<cstring> #include<cstdio> #include<algorithm> using namespace std; int a[100][100]; int n,m,ans; bool dfs(int step) { int i,j,t,ii,jj,x,y,cnt,tx,ty; t=0; for(i=0;i<n;i++) t=max(t,*max_element(a[i],a[i]+m)); if(step+t>=ans) return 0; if(t==0) { ans=step; return 1; } for(i=0;i<n;i++) for(j=0;j<m;j++) { if(a[i][j]) { if(i==0) { for(ii=0;ii<n;ii++) if(!a[ii][j]) break; if(ii==n) { for(ii=0;ii<n;ii++) a[ii][j]--; if(dfs(step+1)) return 1; for(ii=0;ii<n;ii++) a[ii][j]++; } } if(j==0) { for(ii=0;ii<m;ii++) if(!a[i][ii]) break; if(ii==m) { for(ii=0;ii<m;ii++) a[i][ii]--; if(dfs(step+1)) return 1; for(ii=0;ii<m;ii++) a[i][ii]++; } } for(ii=i+1;ii<n;ii++) for(jj=0;jj<m;jj++) { if(a[ii][jj]&&jj!=j) { x=ii-i; y=jj-j; cnt=0; for(tx=i,ty=j;tx>=0&&tx<n&&ty>=0&&ty<m&&a[tx][ty];tx+=x,ty+=y) cnt++; if(tx>=0&&tx<n&&ty>=0&&ty<m||cnt<3) continue; for(tx=i,ty=j;tx>=0&&tx<n&&ty>=0&&ty<m&&a[tx][ty];tx+=x,ty+=y) a[tx][ty]--; if(dfs(step+1)) return 1; for(tx=i,ty=j;tx>=0&&tx<n&&ty>=0&&ty<m;tx+=x,ty+=y) a[tx][ty]++; } } return 0; } } } int main() { int T,i,j,cnt; scanf("%d",&T); while(T--) { scanf("%d%d",&n,&m); n++;m++; cnt=0; for(i=0;i<n;i++) for(j=0;j<m;j++) { scanf("%d",&a[i][j]); cnt+=a[i][j]; } ans=min(14,cnt/3); dfs(0); printf("%d\n",ans); } }
1 5 4 0 1 0 0 1 0 1 0 1 0 2 1 1 0 0 0 3 1 0 0 1 1 1 0 1 0 1 0 1 0
4
标签:size ast nal color mini clu script written chmod
原文地址:http://www.cnblogs.com/yangykaifa/p/6978421.html