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