比赛 |
练习12 |
评测结果 |
AAAAAAAAA |
题目名称 |
跳房子 |
最终得分 |
100 |
用户昵称 |
NVIDIA |
运行时间 |
0.000 s |
代码语言 |
C++ |
内存使用 |
0.00 MiB |
提交时间 |
2017-06-30 13:17:28 |
显示代码纯文本
/*看数据以为floodfill,结果是模拟*/
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
const int MAXNNN=1000002;
char buf[1<<15],*fs,*ft;
inline char getc() {return (fs==ft&&(ft=(fs=buf)+fread(buf,1,1<<15,stdin),fs==ft))?0:*fs++;}//比传统快读慢............
inline int q()
{
int x=0,f=1; char ch=getc();
while(!isdigit(ch)){if(ch=='-')f=-1;ch=getc();}
while(isdigit(ch)){x=x*10+ch-'0';ch=getc();}return x*f;
}
/*char mas[1<<15],*FS=mas,*FT=mas+(1<<15);
#define ot(x) (fs==ft?fwrite(mas,1,1<<15,stdout),*(FS=mas)++=x:*FS++=x)
inline void w(int x)
{
if(x<0) {ot(45);x=-x;}
static char s[15],*b;b=s;
if(!x)*b++=48;
for(;x;*b++=x%10+48,x/=10);
for(;b--!=s;ot(*b));
}*/
int a[6][6],dx[]={0,0,1,-1},dy[]={1,-1,0,0};
bool t[MAXNNN];
inline void dfs(int x,int y,int n,int deep){if(deep==6){t[n]=1;return;}for(int i=0;i<4;i++)if(x+dx[i]>=1&&y+dy[i]>=1&&x+dx[i]<=5&&y+dy[i]<=5)dfs(x+dx[i],y+dy[i],10*n+a[x+dx[i]][y+dy[i]],deep+1);}
inline int aaa()
{
freopen("numgrid.in","r",stdin);freopen("numgrid.out","w",stdout);
int i,j,ans=0;
for(i=1;i<=5;i++)for(j=1;j<=5;j++)a[i][j]=q();
for(i=1;i<=5;i++)for(j=1;j<=5;j++)dfs(i,j,a[i][j],1);
for(i=0;i<1000000;i++)if(t[i])ans++;
printf("%d\n",ans);
}
int aa=aaa();
int main(){;
}