比赛 |
202103省实验桐柏一中普及组联赛 |
评测结果 |
WWWWWWWWWW |
题目名称 |
亡羊补牢,未为迟也 |
最终得分 |
0 |
用户昵称 |
lyxleo |
运行时间 |
0.000 s |
代码语言 |
C++ |
内存使用 |
0.00 MiB |
提交时间 |
2021-03-22 19:12:46 |
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
int n,m;
bool vis[25][25];//表示当前位置有没有被占用
int tot;
int minn=1e9;
int num;
inline void change(long long x,long long y){
const long long dx[8]={-2,-2,-1,1,2,2,1,-1};
const long long dy[8]={-1,1,2,2,1,-1,-2,-2};
for(int d=0;d<8;++d){
if(x+dx[d] >=1&&x+dx[d]<=n&&y+dy[d]>=1&&y+dy[d]<=n){
vis[x+dx[d]][y+dy[d]]=1;
}
}
}
void dfs(int x,int y){
vis[x][y] = 1;
bool have = false;
change(x,y);
for(int i=1;i<=n;++i){
for(int j=1;j<=m;++j){
if(!vis[i][j]){
have=true;
++tot;
dfs(i,j);
}
}
}
if(!have){
return;
}
}
int main(){
freopen("secretnum.in","r",stdin);
freopen("secretnum.out","w",stdout);
scanf("%lld %lld",&n,&m);
for(int i=1;i<=n;++i){
for(int j=1;j<=m;++j){
for(int p=1;p<=n;++p){
for(int q=1;q<=m;++q){
vis[p][q] = 0;
}
}
tot=1;
dfs(i,j);
if(tot == minn){
++num;
}
if(tot < minn){
minn = tot;
num = 1;
}
}
}
printf("%d %d",minn,num);
return 0;
}