| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
时限是不是太紧了,这样都TLE,过得程序快的就那两个阿#include <iostream.h>
#include <string.h>
#include <algorithm>
#define inf 20000000
#define KB(i) (k&(1<<(i)))
#define BIN(i) (1<<(i))
int b[1<<16],v[1<<16],s[1<<16],min,sum;
int a[]={51,102,204,816,1632,3264,13056,26112,52224};
char str[20];
int maxDFS(int k,int step)
{
return 0;
}
int dfs(int k,int dep)
{
if(b[k]!=-1)
return b[k];
if(v[k]!=dep)
return 0;
int i,d=0;
--dep;
for(i=0;i<16;++i)
if(k&BIN(i))
{
if(i-4>=0 && !KB(i-4))
d += dfs((k|BIN(i-4))&(~BIN(i)),dep);
if(i+4<16 && !KB(i+4))
d += dfs((k|BIN(i+4))&(~BIN(i)),dep);
if(i%4 != 0 && !KB(i-1))
d += dfs((k|BIN(i-1))&(~BIN(i)),dep);
if(i%4!=3 && !KB(i+1))
d += dfs((k|BIN(i+1))&(~BIN(i)),dep);
}
return b[k] = d;
}
void minBFS(char c)
{
int k=0,r,f,i,j,d;
for(i=0;i<16;++i)
if(str[i]==c)
k |= BIN(i);
d = k;
std::fill(v,v+(1<<16),inf);
for(i=0;i<9;++i)
v[a[i]]=0,s[i]=a[i];
for(r=0,f=9;v[d]==inf;++r)
{
k = s[r];
for(i=0;i<16;++i)
if(k&BIN(i))
{
if(i-4>=0 && !KB(i-4))
{
j = ((k|BIN(i-4))&(~BIN(i)));
if(v[j]==inf)
{
v[j] = v[k]+1;
s[f++] = j;
}
}
if(i+4<16 && !KB(i+4))
{
j = ((k|BIN(i+4))&(~BIN(i)));
if(v[j]==inf)
{
v[j] = v[k]+1;
s[f++] = j;
}
}
if(i%4 != 0 && !KB(i-1))
{
j = ((k|BIN(i-1))&(~BIN(i)));
if(v[j]==inf)
{
v[j] = v[k]+1;
s[f++] = j;
}
}
if(i%4!=3 && !KB(i+1))
{
j = ((k|BIN(i+1))&(~BIN(i)));
if(v[j]==inf)
{
v[j] = v[k]+1;
s[f++] = j;
}
}
}
}
if(min < v[d])
return ;
std::fill(b,b+(1<<16),-1);
for(i=0;i<9;++i)
b[a[i]] = 1;
k = dfs(d,v[d]);
if(min == v[d])
sum += k;
else
{
min = v[d];
sum = k;
}
}
void minStep()
{
min = inf;
minBFS('A');
minBFS('B');
minBFS('C');
minBFS('D');
}
void main()
{
char st[4];
int i;
while(cin>>str)
{
for(i=0;i<3;++i)
{
cin>>st;
strcat(str,st);
}
minStep();
cout<<min<<" "<<sum<<endl;
}
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator