delete pics to save space
This commit is contained in:
86
7.1084.cpp
Normal file
86
7.1084.cpp
Normal file
@ -0,0 +1,86 @@
|
||||
#include<cstdio>
|
||||
#include<cstring>
|
||||
int n,m,maxd,cnt,sum;
|
||||
int FullSize[625],Size[625];
|
||||
bool sti[65],in[625][65];
|
||||
inline int getc(int r,int c)// |
|
||||
{
|
||||
return r*(2*n+1)+c+n+1;
|
||||
}
|
||||
inline int getr(int r,int c)//--
|
||||
{
|
||||
return r*(2*n+1)+c+1;
|
||||
}
|
||||
inline int FindNext()
|
||||
{
|
||||
for(int i=1;i<=cnt;i++)
|
||||
if(Size[i]==FullSize[i])
|
||||
return i;
|
||||
return 0;
|
||||
}
|
||||
void dfs(int d)
|
||||
{
|
||||
if(d>=maxd) return;
|
||||
int next=FindNext();
|
||||
if(next==0)
|
||||
{
|
||||
maxd=d;
|
||||
return;
|
||||
}
|
||||
for(int i=1;i<=sum;i++)
|
||||
if(in[next][i])
|
||||
{
|
||||
for(int j=1;j<=cnt;j++)
|
||||
if(in[j][i]) Size[j]--;
|
||||
dfs(d+1);
|
||||
for(int j=1;j<=cnt;j++)
|
||||
if(in[j][i]) Size[j]++;
|
||||
}
|
||||
}
|
||||
int main()
|
||||
{
|
||||
#ifdef local
|
||||
freopen("pro.in","r",stdin);
|
||||
// freopen("pro.out","w",stdout);
|
||||
#endif
|
||||
int kase;
|
||||
scanf("%d",&kase);
|
||||
while(kase-->0)
|
||||
{
|
||||
memset(in,0,sizeof(in));
|
||||
memset(sti,1,sizeof(sti));
|
||||
cnt=0;
|
||||
scanf("%d%d",&n,&m);
|
||||
int a,b,e,f;
|
||||
for(int i=0;i<m;i++)
|
||||
{
|
||||
scanf("%d",&a);
|
||||
sti[a]=0;
|
||||
}
|
||||
for(int len=1;len<=n;len++)
|
||||
for(int r=0;r+len<=n;r++)
|
||||
for(int c=0;c+len<=n;c++)
|
||||
{
|
||||
cnt++;
|
||||
FullSize[cnt]=len*4;
|
||||
Size[cnt]=0;
|
||||
for(int i=0;i<len;i++)
|
||||
{
|
||||
a=getr(r,c+i);
|
||||
b=getr(r+len,c+i);
|
||||
e=getc(r+i,c);
|
||||
f=getc(r+i,c+len);
|
||||
in[cnt][a]=true;
|
||||
in[cnt][b]=true;
|
||||
in[cnt][e]=true;
|
||||
in[cnt][f]=true;
|
||||
Size[cnt]+=sti[a]+sti[b]+sti[e]+sti[f];
|
||||
}
|
||||
}
|
||||
maxd=n*n;
|
||||
sum=2*n*(n+1);
|
||||
dfs(0);
|
||||
printf("%d\n",maxd);
|
||||
}
|
||||
return 0;
|
||||
}
|
Reference in New Issue
Block a user