U384198 反方向的丘比特
题目背景
初二(5)班
由于鸳鸯众多,所以班主任打算做 beyond 丘比特
题目描述
班上有 $n$ 名同学,每个同学有一个座号为 $1$ 到 $n$。班级为一个 $a \times b$ 的矩形,每个格子为一个位置,共有$a \times b$ 个位置。
对于同学 $i$ 和同学 $j(1\le i,j \le n)$ 当这两位同学坐在一起的时候会产生 $love_{i,j}$ 的爱慕值,注意在初二(5)班只会出现双向奔赴,所以 $love_{i,j}=love_{j,i}$。
对于两位同学坐在一起的定义是:相邻,对角也算。
形式化的,同学 $i$ 位于 $(x_i,y_i)$ ,同学 $j$ 位于 $(x_j,y_j)$,两位同学坐在一起当且仅当 $\max\{|x_i-x_j|,|y_i-y_j|\}=1$
要求求出最小、最大爱慕值之和
输入格式
共 $2+n$ 行
第一行:$n,a,b$ 用空格隔开
第 $1$ 到第 $(1+n)$ 行:每行 $n$ 个值 为 $love_{行-1,列}$ 用空格隔开
输出格式
一行,最小、最大爱慕值之和,用空格隔开
说明/提示
$1\le n\le a \times b \le 10$
$2\le a,b\le 10$
对于$1\le i,j \le n\ \ love_{i,j}=love_{j,i}$
因为同学们都不自恋,对于$1\le i\le n\ \ love_{i,i}=0$。
当前数据范围std (时间复杂度$O(2^n\times ab)$) 。
只供验证代码正确性使用
~~不要完全相信 我不敢保证std一定对 但是通过4轮手写数据 还是有点可信度的~~
std:
```cpp
#include
#include
using namespace std;
const int maxn=100;
int n,a,b,noi[maxn][maxn],minans=0x3f,maxans=-0x3f,f[maxn][maxn];
bool vis[maxn][maxn];
int count(){
int cnt=0;
for(int i=1;i>a>>b;
for(int i=1;inoi[i][j];
memset(f,0,sizeof(f));
memset(vis,0,sizeof(vis));
bs(1);
cout